【发布时间】:2023-03-18 08:08:01
【问题描述】:
我正在尝试从服务器下载 pdf 文件。我为此写了一些代码。它适用于 api 级别 21 和 >=23,但不适用于 api 22。这是问题所在:
OutputStream output = new FileOutputStream(fileName);
byte data[] = new byte[1024];
while ((count = input.read(data)) != -1) {
output.write(data, 0, count);
}
但是当它尝试执行时
OutputStream output = new FileOutputStream(fileName);
它显示
java.io.FileNotFoundException: /storage/emulated/0/data /data/com.example.test/files/training/training.pdf: open failed: ENOENT (No such file or directory)
这适用于 api 级别 21 和 23。出了什么问题?我该如何解决这个问题?
【问题讨论】:
-
你在AndroidManifest.xml文件中给
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />权限了吗? -
当然。它还在 api 21 和 23 上工作
-
请在获取文件之前检查它是否存在然后尝试读取。你可以查看stackoverflow.com/questions/16237950/…
-
来自 Android 开发者控制台 FileNotFoundException 在“如果文件存在但为目录而非常规文件、不存在但无法创建或因任何其他原因无法打开”时发生。这意味着如果文件不存在,它将创建新文件
-
你传递给 FileOutputStream() 构造函数的文件名是什么?
标签: android fileoutputstream android-download-manager