在使用Java下載文件時(shí),可能會(huì)遇到各種異常情況,如網(wǎng)絡(luò)連接問題、文件不存在、權(quán)限問題等。為了確保程序的健壯性,我們需要對(duì)可能出現(xiàn)的異常進(jìn)行處理。以下是一個(gè)簡(jiǎn)單的Java下載文件并處理異常的示例:
import java.io.*;
import java.net.*;
public class FileDownloader {
public static void main(String[] args) {
String fileUrl = "https://example.com/path/to/your/file.txt";
String destinationFile = "downloaded_file.txt";
try {
downloadFile(fileUrl, destinationFile);
System.out.println("文件下載成功!");
} catch (IOException e) {
System.err.println("文件下載失?。?quot; + e.getMessage());
}
}
public static void downloadFile(String fileUrl, String destinationFile) throws IOException {
URL url = new URL(fileUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000); // 設(shè)置連接超時(shí)時(shí)間(單位:毫秒)
connection.setReadTimeout(5000); // 設(shè)置讀取超時(shí)時(shí)間(單位:毫秒)
try (InputStream inputStream = connection.getInputStream();
FileOutputStream fileOutputStream = new FileOutputStream(destinationFile)) {
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, bytesRead);
}
} catch (IOException e) {
throw new IOException("文件下載過程中出現(xiàn)異常:" + e.getMessage(), e);
} finally {
connection.disconnect();
}
}
}
在這個(gè)示例中,我們首先定義了要下載的文件URL和要將文件保存到的本地路徑。然后,我們嘗試調(diào)用downloadFile
方法來下載文件。如果下載過程中出現(xiàn)任何異常,我們將捕獲IOException
并在控制臺(tái)輸出錯(cuò)誤信息。
在downloadFile
方法中,我們使用URL
和HttpURLConnection
類來建立與文件的連接。我們?cè)O(shè)置了連接和讀取超時(shí)時(shí)間,以防止程序在等待響應(yīng)時(shí)長(zhǎng)時(shí)間掛起。接下來,我們使用try-with-resources
語句來確保在下載完成后正確關(guān)閉輸入流和文件輸出流。在下載過程中,我們將從輸入流讀取的數(shù)據(jù)寫入到文件輸出流中。如果在下載過程中出現(xiàn)異常,我們將拋出一個(gè)新的IOException
,其中包含有關(guān)異常的詳細(xì)信息。