gpt4 book ai didi

java - 在 Android 上下载 - FileNotFoundException 但文件存在

转载 作者:太空宇宙 更新时间:2023-11-03 13:04:18 26 4
gpt4 key购买 nike

我尝试从 Android 中的服务器下载文件,但我得到的只是一个 FileNotFoundException。

我的下载方法适用于我提供的所有文件,但不适用于这个特定的 url。它不工作的 url 看起来像这样:http://server.com/download.aspx?action=geta&sid=12345&file=somedata.xml&client=android

我在 url 中看到没有错误,如果我将它输入到网络浏览器中,我会立即获得该文件。权限也还行,我可以用这个方法从服务器下载所有其他文件,例如用“getfile”而不是“get”,但是我要下载的文件只能通过“get”访问,所以我可以'只是替换它。

无论如何,这是我的下载方法:

public String downloadURL (URL url, String fileName) throws IOException {
String destination = null;

try {
destination = Environment.getExternalStorageDirectory() + "/"
+ "myapp/" + fileName;

InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream(destination);

byte buffer[] = new byte[1024];
int bytes = 0;

while ((bytes = input.read(buffer)) != -1) {
output.write(buffer,0, bytes);
}

output.flush();
output.close();
input.close();

}
catch (Exception e) {
Log.e("DOWNLOAD URL", "downloading file failed due to " + e.toString());
}

return destination;
}

我在这里有点绝望,我在 StackOverflow 上搜索了一段时间但没有找到解决方案,非常感谢您的帮助。

编辑:错误堆栈,如果是的话,我认为是:

08-16 17:32:58.530: WARN/System.err(24754): java.io.FileNotFoundException: http://myfirm.com/download.aspx?action=get&sid=6d62429x-4e1c&file=data.xml&client=android 08-16 17:32:58.530: WARN/System.err(24754): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:532) 08-16 17:32:58.530: WARN/System.err(24754): at java.net.URL.openStream(URL.java:645) 08-16 17:32:58.530: WARN/System.err(24754): at myapp.cont.fetch.Downloader.downloadURL(Downloader.java:412) 08-16 17:32:58.530: WARN/System.err(24754): at myapp.cont.fetch.Downloader.getData(Downloader.java:465) 08-16 17:32:58.530: WARN/System.err(24754): at myapp.cont.fetch.Downloader$GetFilesTask.doInBackground(Downloader.java:245) 08-16 17:32:58.530: WARN/System.err(24754): at myapp.cont.fetch.Downloader$GetFilesTask.doInBackground(Downloader.java:1) 08-16 17:32:58.530: WARN/System.err(24754): at android.os.AsyncTask$2.call(AsyncTask.java:252) 08-16 17:32:58.530: WARN/System.err(24754): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 08-16 17:32:58.530: WARN/System.err(24754): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 08-16 17:32:58.530: WARN/System.err(24754): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081) 08-16 17:32:58.530: WARN/System.err(24754): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:574) 08-16 17:32:58.530: WARN/System.err(24754): at java.lang.Thread.run(Thread.java:1020)

最佳答案

问题出在您的目标文件上。目录 myapp 在 SDCard 上不存在,或者您没有在 manifest 中包含在 SD 卡上写入的权限:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

关于java - 在 Android 上下载 - FileNotFoundException 但文件存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7080032/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com