无法创建文件 - 拒绝EACCESS权限

时间:2013-07-11 03:28:34

标签: android file-io android-permissions

我正在将一些文字写入文件,但在写文本之前,我无法自己创建文件。

File newxmlfile = new File(
                        Environment.getExternalStorageDirectory() + "new.xml");
                XmlSerializer serializer = Xml.newSerializer();
                try {
                    newxmlfile.createNewFile();
                } catch (Exception e) {
                    Log.e("IOException", "exception in createNewFile() method",
                            e);
                }

权限设定得很好。

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

SDCard也可以写入并安装。

然而,我一直在

07-11 11:23:01.134: E/IOException(5363): exception in createNewFile() method
07-11 11:23:01.134: E/IOException(5363): java.io.IOException: open failed: EACCES (Permission denied)
07-11 11:23:01.134: E/IOException(5363):    at java.io.File.createNewFile(File.java:948)
07-11 11:23:01.134: E/IOException(5363):    at com.app.example.MainActivity$LongOperation.doInBackground(MainActivity.java:71)
07-11 11:23:01.134: E/IOException(5363):    at com.app.example.MainActivity$LongOperation.doInBackground(MainActivity.java:1)
07-11 11:23:01.134: E/IOException(5363):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
07-11 11:23:01.134: E/IOException(5363):    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
07-11 11:23:01.134: E/IOException(5363):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
07-11 11:23:01.134: E/IOException(5363):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
07-11 11:23:01.134: E/IOException(5363):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
07-11 11:23:01.134: E/IOException(5363):    at java.lang.Thread.run(Thread.java:856)
07-11 11:23:01.134: E/IOException(5363): Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)
07-11 11:23:01.134: E/IOException(5363):    at libcore.io.Posix.open(Native Method)
07-11 11:23:01.134: E/IOException(5363):    at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
07-11 11:23:01.134: E/IOException(5363):    at java.io.File.createNewFile(File.java:941)
07-11 11:23:01.134: E/IOException(5363):    ... 8 more
07-11 11:23:01.134: E/FileNotFoundException(5363): can't create FileOutputStream

1 个答案:

答案 0 :(得分:2)

您的代码是正确的,您只需在文件名前添加额外的/(或File.separator),如下所示:

File newxmlfile = new File(
        Environment.getExternalStorageDirectory() + "/new.xml");
XmlSerializer serializer = Xml.newSerializer();
try {
    newxmlfile.createNewFile();
} catch (Exception e) {
    Log.e("IOException", "exception in createNewFile() method",
            e);
}