0

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

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
4

1 回答 1

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);
}
于 2013-07-11T03:43:08.327 回答