2017-10-11 33 views
-1

ファイルを内部ストレージに読み書きする際に問題が発生しました。Androidが内部ストレージにファイルを読み書きする

これらは私が読んで/ファイルを書き込むために使用するメソッドです:

public static void writeFile(String fileName, String data) throws IOException { 
    File file = new File(activity.getFilesDir() + "/" + fileName); 
    file.getParentFile().mkdirs(); 
    if (file.exists()) 
     file.delete(); 
    file.createNewFile(); 
    FileOutputStream fos = new FileOutputStream(file); 
    fos.write(data.getBytes()); 
    fos.close(); 
} 

public static String readFile(String fileName) throws IOException { 
    FileInputStream fis = new FileInputStream(new File(activity.getFilesDir() + "/" + fileName)); 
    InputStreamReader isr = new InputStreamReader(fis); 
    BufferedReader br = new BufferedReader(isr); 
    StringBuilder sb = new StringBuilder(); 
    String line = br.readLine(); 
    while (line != null) { 
     sb.append(line); 
     line = br.readLine(); 
    } 
    fis.close(); 
    return sb.toString(); 
} 

これは動作します:

writeFile("fileName", "someData"); 
readFile("fileName"); 

が、これにはないが:

writeFile("directory/filename", "someData"); 
readFile("directory/filename"); 

何らかの理由でI FileNotFoundException:(そのようなファイルやディレクトリはありません)

私はいくつかの方法を試しましたが、パスでは何も動作しません。

+0

いつ例外がありますか? – greenapps

+0

mkdirs()の戻り値をチェックしていません。 – greenapps

+0

ファイルが存在する場合は削除します。それは必要ではありません。そして、あなたはdelete()の戻り値をチェックしていません。 – greenapps

答えて

0

チェック書き込みまたは読み取り -

`ファイルのフォルダをAndroidManifest.xmlを

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

を記憶許可するか、あなたのコードでは、このようにしてみてください=新しいファイル(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/ EmailClient /");

folder.mkdirs(); ファイルfile = new File(フォルダ、ファイル名); file.createNewFile(); '

+1

は、内部ではなく内部ストレージを使用しようとしています。 – IceRise

関連する問題