打开存在的文件时FileNotFoundException?

时间:2013-06-05 10:03:26

标签: java android file-io

我使用了

创建了一个文件
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 个答案:

答案 0 :(得分:3)

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

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

file.exists();

检查文件权限是否允许:

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.

答案 1 :(得分:1)

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

open failed: EROFS (Read-only file)

名称FileNotFoundException是missleading

答案 2 :(得分:-1)

在以下情况下也会抛出此异常:

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

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

编辑:

如果是Android应用,请将以下权限添加到清单:

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

答案 3 :(得分:-1)

这个文件创建于:你的root,我认为这是不可读的。

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

编辑:

FileOutputStream fos = app.openFileOutput(Environment.getExternalStorageDirectory() + File.separator +"FileOne.txt", Context.MODE_APPEND);