Android读取和写入内部存储文件

时间:2017-10-11 20:18:14

标签: java android file

我在读取和写入内部存储文件时遇到了问题。

这些是我用来写/读文件的方法:

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 :(没有这样的文件或目录)

我尝试了其他一些方法,但没有任何方法可以使用路径。

1 个答案:

答案 0 :(得分:0)

检查写入或读取 - AndroidManifest.xml中的存储权限

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

或者在您的代码中尝试这样的

`文件夹=新文件(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+&#34; / EmailClient /&#34;);

folder.mkdirs(); 文件文件=新文件(文件夹,文件名); file.createNewFile();`