2017-10-11 90 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