Android:文件IO错误

Sly*_*ynk 6 java file-io multithreading android android-asynctask

问题:在android 4.x上我下载图片时遇到奇怪的错误:

07-23 10:31:05.961: E/XXX(32294): libcore.io.ErrnoException: open failed: ENOENT (No such file or directory) 
07-23 10:31:05.961: E/XXX(32294):  open failed: ENOENT (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

而有时:

07-23 10:31:06.133: W/System.err(32294): java.io.IOException: open failed: ENOENT (No such file or directory)
07-23 10:31:06.133: W/System.err(32294):    at java.io.File.createNewFile(File.java:940)
07-23 10:31:06.133: W/System.err(32294):    at com.XXX.XXX.JSON.Media.save(Media.java:55)
07-23 10:31:06.133: W/System.err(32294):    at com.XXX.XXX.JSON.Media.setFile(Media.java:78)
07-23 10:31:06.133: W/System.err(32294):    at com.XXX.XXX.ServerAccess.AsyncDownloadQueue$QueueMedia.isDone(AsyncDownloadQueue.java:257)
07-23 10:31:06.133: W/System.err(32294):    at com.XXX.XXX.ServerAccess.AsyncDownloadQueue.doInBackground(AsyncDownloadQueue.java:102)
07-23 10:31:06.133: W/System.err(32294):    at com.XXX.XXX.ServerAccess.AsyncDownloadQueue.doInBackground(AsyncDownloadQueue.java:1)
07-23 10:31:06.133: W/System.err(32294):    at com.XXX.Library.Threading.AsyncTask$2.call(AsyncTask.java:189)
07-23 10:31:06.133: W/System.err(32294):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
07-23 10:31:06.133: W/System.err(32294):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
07-23 10:31:06.133: W/System.err(32294):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
07-23 10:31:06.133: W/System.err(32294):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
07-23 10:31:06.133: W/System.err(32294):    at java.lang.Thread.run(Thread.java:856)
07-23 10:31:06.133: W/System.err(32294): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
07-23 10:31:06.141: W/System.err(32294):    at libcore.io.Posix.open(Native Method)
07-23 10:31:06.141: W/System.err(32294):    at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
07-23 10:31:06.141: W/System.err(32294):    at java.io.File.createNewFile(File.java:933)
07-23 10:31:06.141: W/System.err(32294):    ... 11 more
Run Code Online (Sandbox Code Playgroud)

所以奇怪的一点......这适用于Android 2.2并且它可以在4.x上运行带有图像的SOMETIMES.完全相同的下载例程将下载一个文件,但不下载其他文件.多线程访问时有限制吗?每个线程都附加到一个唯一的文件,所以我不认为这是问题; 什么都没有从正在写入的文件中读取.

哦,它不应该是一个许可问题:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)