在使用Java下載文件時,可能會遇到各種異常情況,如網絡連接問題、文件不存在、權限問題等。為了確保程序的健壯性,我們需要對可能出現的異常進行處理。以下是一個簡單的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("文件下載失敗:" + 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); // 設置連接超時時間(單位:毫秒)
connection.setReadTimeout(5000); // 設置讀取超時時間(單位:毫秒)
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("文件下載過程中出現異常:" + e.getMessage(), e);
} finally {
connection.disconnect();
}
}
}
在這個示例中,我們首先定義了要下載的文件URL和要將文件保存到的本地路徑。然后,我們嘗試調用downloadFile
方法來下載文件。如果下載過程中出現任何異常,我們將捕獲IOException
并在控制臺輸出錯誤信息。
在downloadFile
方法中,我們使用URL
和HttpURLConnection
類來建立與文件的連接。我們設置了連接和讀取超時時間,以防止程序在等待響應時長時間掛起。接下來,我們使用try-with-resources
語句來確保在下載完成后正確關閉輸入流和文件輸出流。在下載過程中,我們將從輸入流讀取的數據寫入到文件輸出流中。如果在下載過程中出現異常,我們將拋出一個新的IOException
,其中包含有關異常的詳細信息。