2017-10-11 88 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"); 

出於某種原因,我得到一個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.createNewFile();`

+1

即時嘗試使用INTERNAL存儲,而不是外部。 – IceRise