在Java中,可以使用流式處理來下載大文件而不會消耗過多內存。以下是一種常見的方法:
以下是一個示例代碼:
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
public class FileDownloader {
public static void main(String[] args) {
String fileUrl = "http://example.com/largefile.zip";
String localFilePath = "C:/downloads/largefile.zip";
try {
URL url = new URL(fileUrl);
URLConnection conn = url.openConnection();
InputStream in = new BufferedInputStream(conn.getInputStream());
FileOutputStream out = new FileOutputStream(localFilePath);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
out.close();
in.close();
System.out.println("File downloaded successfully.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
在上面的示例中,我們使用了緩沖區將文件數據逐塊讀取到內存中,并寫入輸出流中,這樣可以防止內存溢出。通過逐塊處理數據,可以有效下載大文件而不會耗盡內存。