android - FileNotFoundException + 将文件写入 SD 卡

标签 android file-io sd-card

我正在尝试从网上下载文件并将其写入 SD 卡。我启用了 WRITE_EXTERNAL_STORAGE 权限。代码在这里失败:

OutputStream output = new FileOutputStream(filePath);

09-15 19:40:31.630: WARN/System.err(7933): java.io.FileNotFoundException: /sdcard/artoo/Customerv08.apk
09-15 19:40:31.630: WARN/System.err(7933):     at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:231)
09-15 19:40:31.630: WARN/System.err(7933):     at java.io.FileOutputStream.<init>(FileOutputStream.java:96)
09-15 19:40:31.630: WARN/System.err(7933):     at java.io.FileOutputStream.<init>(FileOutputStream.java:169)
09-15 19:40:31.630: WARN/System.err(7933):     at java.io.FileOutputStream.<init>(FileOutputStream.java:147)
09-15 19:40:31.640: WARN/System.err(7933):     at com.artoo.settings.InstallerActivity$ProgressDialogAsyncTask.doInBackground(InstallerActivity.java:148)
09-15 19:40:31.640: WARN/System.err(7933):     at com.artoo.settings.InstallerActivity$ProgressDialogAsyncTask.doInBackground(InstallerActivity.java:1)
09-15 19:40:31.640: WARN/System.err(7933):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
09-15 19:40:31.640: WARN/System.err(7933):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:256)
09-15 19:40:31.640: WARN/System.err(7933):     at java.util.concurrent.FutureTask.run(FutureTask.java:122)
09-15 19:40:31.640: WARN/System.err(7933):     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:648)
09-15 19:40:31.640: WARN/System.err(7933):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:673)
09-15 19:40:31.651: WARN/System.err(7933):     at java.lang.Thread.run(Thread.java:1060)
09-15 19:40:31.670: WARN/InputManagerService(53): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@43868480

我正在尝试写入文件,但它之前并不存在。关于如何执行此操作的任何想法?

最佳答案

您收到该错误是因为指定的文件无法打开或不存在。就这么简单。

我之前总是创建一个文件并使用缓冲流写入它,例如:

File file = new File(path, name);
file.createNewFile();
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file), BUFFER);

关于android - FileNotFoundException + 将文件写入 SD 卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3718465/

相关文章:

Android Studio - 在模拟器上运行签名的 apk

android - 无法使用 Firebase 控制台发送数据消息

c++ - 如何在 Linux 上从 C++ 中使用 libexpect 创建的 FILE* 读取标准输出?

C++ 使用条件语句读取文本文件

android - 删除 SD 卡上的文件夹

android - 为什么应用程序一直在等待调试器?

android - 更新/更改 Realm 加密 key

java - Java 中的内存映射 zip 文件

android - 在 Android 应用程序中解压缩 sd 卡上的压缩文件

android - 从 SD 卡中获取多个图像以显示在 Coverflow 中