我正在将一些文字写入文件,但在写文本之前,我无法自己创建文件。
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
答案 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);
}