gpt4 book ai didi

java - 如何下载文件并正确处理异常?

转载 作者:行者123 更新时间:2023-12-01 07:41:34 26 4
gpt4 key购买 nike

我的下载文件的方法。它有点简化,我删除了第三个参数 - DownloadListener,我用它来通知调用者有关下载进度的信息。

public static boolean downloadFile(String url, File file) {
try {
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
connection.connect();

FileOutputStream fos = new FileOutputStream(file);
InputStream is = connection.getInputStream();

byte[] buffer = new byte[1024];
int len = 0;
while ((len = is.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}

is.close();
fos.flush();
fos.close();
return true;
} catch (IOException e) {
if (file.exists())
file.delete();
return false;
}
}

我猜想异常处理不正确,但是如果我将 close() 调用放入 finally block 中,它们将必须被 try-catch block 包围,这看起来非常困惑。必须有一些更清晰的方法来正确下载 Java 中的文件。另一件事是,我应该调用 connection.disconnect() 吗?

最佳答案

直到 Java 7 ARM 为止。你是对的,你经常需要嵌套 try-finally finally 内的 block block ,以便最终清理多个资源。如果在线完成,正确的做法看起来不太整洁。

这通常是提取静态辅助方法的良好候选者(例如 IOUtils.closeConnection() );该方法可以捕获任何异常,从而避免异常阻止进一步的资源被关闭。

关于java - 如何下载文件并正确处理异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4365365/

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