2012-02-14 11 views
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; 
} 

答えて

6

中のSeの説明は、それは、標準のJava I/Oを使用して、はい内蔵ストレージ

を使用してファイルとフォルダ構造を作成し、維持することは可能です。

それとも下の例は、無残

才能プログラマが症状を説明するのではなく、「無残失敗した」などの無意味なフレーズを使用する方法を知って失敗した理由を教えてください。

つまり、file.mkdirs();はディレクトリを作成します。次に、データを書き込む目的で、ファイルであるかのようにそのディレクトリを開こうとします。それは私が気づいているOSではなく、確かにAndroidでは動作しません。ファイルの親ディレクトリを作成するもの(file.getParentFile().mkdirs()など)のmkdirs()に電話してください。

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

+2

ありがとうございました。 才能のあるプログラマーは、「悲惨な失敗」のような無意味なフレーズを使用するのではなく、症状を説明する方法を知っています。 本当に疲れて怒っていないのではないでしょうか。 それは無意味なコメントではありません。あなたがそれについて考えるならそれは多くを伝えます。 私は才能のあるプログラマーではないかもしれません。 私はちょうどここで周辺のすべてを修正する必要があります。 朝の午前6時にgetParentFolderというメソッドが呼び出されているはずです。 しかしあなたの権利はもっと正確である可能性があります。 – DevNull

+1

訂正コードを更新しました。 うまくいけば、誰かがそれから恩恵を受けることを望みます。 もう一度ありがとうございます。 – DevNull

+1

注釈として。誰かがまだ間違いに直面している場合に備えて。 mkdir()またはmkdirs()を使用しているかどうか確認してください。 – Zen

関連する問題