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" />

SDカードは書き込み可能でマウントも可能です。

しかし、私は得続けました

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 に答える