2

我使用以下文件制作了一个文件:

FileOutputStream fos = app.openFileOutput("FileOne.txt", Context.MODE_APPEND);

稍后在同一程序中,我尝试使用以下命令打开此文件:

PrintWriter writer = new PrintWriter(context.getFileStreamPath("FileOne.txt"));

但这样做会在 LogCat 中给出此异常:

06-05 09:49:32.230: D/error155 java.lang.RuntimeException: File not found(7707): [ 06-05 09:49:32.240  7707: 7736 D/ java.io.FileNotFoundException: /FileOne.txt: open failed: EROFS (Read-only file)

我检查了内部存储,该文件确实存在。如何正确打开文件?

4

4 回答 4

3

文件文件 = 新文件(您的路径);

//首先确保文件存在于使用以下语句提供的路径上:

文件已存在();

检查文件权限是否允许:

file.canExecute(); – return true, file is executable; false is not.
file.canWrite(); – return true, file is writable; false is not.
file.canRead(); – return true, file is readable; false is not.

设置文件权限:

file.setExecutable(boolean); – true, allow execute operations; false to disallow it.
file.setReadable(boolean); – true, allow read operations; false to disallow it.
file.setWritable(boolean); – true, allow write operations; false to disallow it.
于 2013-06-05T13:12:11.300 回答
1

该文件可以找到,但它是只读的

open failed: EROFS (Read-only file)

名称 FileNotFoundException 具有误导性

于 2013-06-05T10:09:40.513 回答
-1

在以下情况下也会引发此异常:

  • 该文件实际上是一个文件夹。
  • 如果您没有访问文件的必要权限

更改此文件的权限以将其打开(chmod 777 FileOne.txt)

编辑:

如果是 android 应用,请在清单中添加以下权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
于 2013-06-05T10:12:44.597 回答
-1

这个文件是在你的根目录下创建的,我认为它不可读。

所以提供一个路径,在指定目录中创建任何文件:

编辑:

FileOutputStream fos = app.openFileOutput(Environment.getExternalStorageDirectory() + File.separator +"FileOne.txt", Context.MODE_APPEND);
于 2013-06-05T10:20:26.887 回答