Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java FileOutputStream不使用API级别>;=22_Java_Android - Fatal编程技术网

Java FileOutputStream不使用API级别>;=22

Java FileOutputStream不使用API级别>;=22,java,android,Java,Android,我正试图写入SD卡上的文件。。。这段代码在emulator和API lvl 22下的真实设备上都没有问题。但由于某种原因,当API级别高于22时,它就不工作了(我在Emulator上测试它,我没有可用的真实设备来测试高于API lvl 22的版本) 这是它停止时没有错误的行(API级别>=22): 马上跳到 stream.close(); 有什么问题吗 更新: 好的,在为FileOutputStream添加了catch Exeption之后,我在logcat中得到了以下内容:

我正试图写入SD卡上的文件。。。这段代码在emulator和API lvl 22下的真实设备上都没有问题。但由于某种原因,当API级别高于22时,它就不工作了(我在Emulator上测试它,我没有可用的真实设备来测试高于API lvl 22的版本)

这是它停止时没有错误的行(API级别>=22):

马上跳到

    stream.close();
有什么问题吗

更新:

好的,在为FileOutputStream添加了catch Exeption之后,我在logcat中得到了以下内容:

    12-31 12:11:48.814  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ java.io.FileNotFoundException: /storage/1608-2C08/smpcDir/smpcFile.txt: open failed: ENOENT (No such file or directory)
    12-31 12:11:48.815  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:452)
    12-31 12:11:48.815  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
    12-31 12:11:48.815  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at java.io.FileOutputStream.<init>(FileOutputStream.java:72)
    12-31 12:11:48.816  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at com.smpc.davidtoth.smpc.UpdateWidgetService.readIt(UpdateWidgetService.java:321)
    12-31 12:11:48.816  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at com.smpc.davidtoth.smpc.UpdateWidgetService.downloadUrl(UpdateWidgetService.java:257)
    12-31 12:11:48.817  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at com.smpc.davidtoth.smpc.UpdateWidgetService.access$100(UpdateWidgetService.java:47)
    12-31 12:11:48.817  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at com.smpc.davidtoth.smpc.UpdateWidgetService$DownloadWebpageTask.doInBackground(UpdateWidgetService.java:211)
    12-31 12:11:48.818  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at com.smpc.davidtoth.smpc.UpdateWidgetService$DownloadWebpageTask.doInBackground(UpdateWidgetService.java:196)
    12-31 12:11:48.818  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:295)
    12-31 12:11:48.818  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    12-31 12:11:48.819  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
    12-31 12:11:48.819  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
    12-31 12:11:48.819  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
    12-31 12:11:48.820  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at java.lang.Thread.run(Thread.java:818)
    12-31 12:11:48.820  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
    12-31 12:11:48.909  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at libcore.io.Posix.open(Native Method)
    12-31 12:11:48.912  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
    12-31 12:11:48.913  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:438)
    12-31 12:11:48.913  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ ... 13 more
12-31 12:11:48.814 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ java.io.FileNotFoundException:/storage/1608-2C08/smpcDir/smpcFile.txt:open failed:enoint(没有这样的文件或目录)
12-31 12:11:48.815 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ 在libcore.io.IoBridge.open中(IoBridge.java:452)
12-31 12:11:48.815 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ 位于java.io.FileOutputStream。(FileOutputStream.java:87)
12-31 12:11:48.815 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ 位于java.io.FileOutputStream。(FileOutputStream.java:72)
12-31 12:11:48.816 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ 位于com.smpc.davidtoth.smpc.UpdateWidgetService.readIt(UpdateWidgetService.java:321)
12-31 12:11:48.816 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ 位于com.smpc.davidoth.smpc.UpdateWidgetService.downloadUrl(UpdateWidgetService.java:257)
12-31 12:11:48.817 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ 在com.smpc.davidtoth.smpc.UpdateWidgetService.access$100(UpdateWidgetService.java:47)
12-31 12:11:48.817 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ 在com.smpc.davidoth.smpc.UpdateWidgetService$downloadWebPagetTask.doInBackground(UpdateWidgetService.java:211)上
12-31 12:11:48.818 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ 在com.smpc.davidoth.smpc.UpdateWidgetService$downloadWebPagetTask.doInBackground(UpdateWidgetService.java:196)
12-31 12:11:48.818 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ 在android.os.AsyncTask$2.call(AsyncTask.java:295)
12-31 12:11:48.818 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ 位于java.util.concurrent.FutureTask.run(FutureTask.java:237)
12-31 12:11:48.819 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ 在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
12-31 12:11:48.819 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
12-31 12:11:48.819 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
12-31 12:11:48.820 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ 运行(Thread.java:818)
12-31 12:11:48.820 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ 原因:android.system.ErrnoException:open失败:enoint(没有这样的文件或目录)
12-31 12:11:48.909 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ 在libcore.io.Posix.open中(本机方法)
12-31 12:11:48.912 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ 在libcore.io.BlockGuardOs.open上(BlockGuardOs.java:186)
12-31 12:11:48.913 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ 在libcore.io.IoBridge.open中(IoBridge.java:438)
12-31 12:11:48.913 17218-17235/com.smpc.davidoth.smpc W/System.err﹕ ... 还有13个

我找到了解决办法

在Android api级别23中,权限模型发生了更改。现在,您需要在运行时请求权限


然后我实现了它,就像

你在logcat中得到Api级别>=22的错误吗?logcat中根本没有错误……我已经更新了我的帖子。我意识到我以前使用的代码没有捕获FileOutputStream行的exeption。现在我至少在logcat中有一个错误(由于某些原因,该文件不存在)。。。请检查目标路径不存在,也就是说一些中间目录。是的,在API lvl 22下,emulator的路径始终是:/storage/sdcard/smpcDir/smpcFile.txt。。。不知道编号为“/1608-2C08”的wierd文件夹是什么,如果我使用API 23模拟器进行尝试。。。
    stream.close();
    12-31 12:11:48.814  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ java.io.FileNotFoundException: /storage/1608-2C08/smpcDir/smpcFile.txt: open failed: ENOENT (No such file or directory)
    12-31 12:11:48.815  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:452)
    12-31 12:11:48.815  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
    12-31 12:11:48.815  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at java.io.FileOutputStream.<init>(FileOutputStream.java:72)
    12-31 12:11:48.816  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at com.smpc.davidtoth.smpc.UpdateWidgetService.readIt(UpdateWidgetService.java:321)
    12-31 12:11:48.816  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at com.smpc.davidtoth.smpc.UpdateWidgetService.downloadUrl(UpdateWidgetService.java:257)
    12-31 12:11:48.817  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at com.smpc.davidtoth.smpc.UpdateWidgetService.access$100(UpdateWidgetService.java:47)
    12-31 12:11:48.817  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at com.smpc.davidtoth.smpc.UpdateWidgetService$DownloadWebpageTask.doInBackground(UpdateWidgetService.java:211)
    12-31 12:11:48.818  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at com.smpc.davidtoth.smpc.UpdateWidgetService$DownloadWebpageTask.doInBackground(UpdateWidgetService.java:196)
    12-31 12:11:48.818  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:295)
    12-31 12:11:48.818  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    12-31 12:11:48.819  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
    12-31 12:11:48.819  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
    12-31 12:11:48.819  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
    12-31 12:11:48.820  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at java.lang.Thread.run(Thread.java:818)
    12-31 12:11:48.820  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
    12-31 12:11:48.909  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at libcore.io.Posix.open(Native Method)
    12-31 12:11:48.912  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
    12-31 12:11:48.913  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:438)
    12-31 12:11:48.913  17218-17235/com.smpc.davidtoth.smpc W/System.err﹕ ... 13 more