2

私は以下のリンクを調べましたが、それは私の質問に答えません。 http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

タイトルの質問に対する答えが「はい」の場合。誰かがサブフォルダを作成してそのフォルダにファイルを追加する簡単な例を提供してもらえますか?そして、おそらくサブフォルダからファイルを読み戻す方法を示しますか?

または、以下の例が惨めに失敗する理由を教えてください

file.mkdirs();を変更した後に動作するようになりました。file.getParentFile()。mkdirs();
次の回答の説明

public static void Test(String path, String fileName, String fileStr, Context ctx)
{

    SaveFile(path, fileName, fileStr, ctx);
    String returnFileStr = ReadFile(path, fileName, ctx);
}
public static Boolean pathExists(String path, Context ctx)
{
    Boolean result = false;
    String[] pathSeqments = path.split("/");
    String pathStr = "";
    for(int i = 0;i<pathSeqments.length;i++ )
    {
        pathStr += pathSeqments[i];
        if(!new File(ctx.getFilesDir() +"/" + pathStr).exists())
        {
            result = false;
            break;
        }
        pathStr += "/";
        result = true;
    }
    return result;
}

public static void SaveFile(String path, String fileName, String fileStr, Context ctx) {
    try {           
        File file = new File(ctx.getFilesDir() +"/" + path, fileName); //new File(ctx.getFilesDir() +"/" + path + "/" + fileName);
        file.getParentFile().mkdirs();

        FileOutputStream fOut = new FileOutputStream(file);
        OutputStreamWriter osw = new OutputStreamWriter(fOut);

        osw.write(fileStr);

        osw.flush();
        osw.close();

    } catch (IOException ioe) {
        ioe.printStackTrace();
    }
}

public static String ReadFile(String path, String fileName, Context ctx) {
    String fileStr = null;
    try {           
        if(pathExists(path, ctx))
        {
            File file = new File(ctx.getFilesDir() +"/" + path, fileName);
            FileInputStream fIn = new FileInputStream(file);

            StringWriter writer = new StringWriter();

            IOUtils.copy(fIn, writer, "UTF-8");
            fileStr = writer.toString();
        }

    } catch (IOException ioe) {
        ioe.printStackTrace();
    }
    return fileStr;
}
4

1 に答える 1

6

内部ストレージを使用して、ファイルを含むフォルダー構造を作成および維持することは可能ですか?

はい、標準のJava I/Oを使用しています。

または、以下の例が惨めに失敗する理由を教えてください

才能のあるプログラマーは、「惨めに失敗する」のような無意味なフレーズを使用するのではなく、症状を説明する方法を知っています。

そうは言ってもfile.mkdirs();、ディレクトリを作成します。次に、データを書き込むために、ファイルであるかのようにそのディレクトリを開いてみます。これは、私が知っているOSでは機能しません。また、Androidでは機能しません。mkdirs()ファイルの親ディレクトリを作成するものを呼び出してください(例:) file.getParentFile().mkdirs()

また、Fileオブジェクトを作成するために連結を使用しないでください。適切なFileコンストラクターを使用してください。

于 2012-02-14T15:13:54.790 に答える