今天我们将学习如何在 java 中从 URL 下载文件. 我们可以使用 java.net.URL
openStream()
方法从 java 程序中的 URL 下载文件. 我们可以使用 Java NIO Channels 或 Java IO InputStream 来读取从 URL 开放流的数据,然后将其保存到文件中。
Java 從 URL 下載檔案
Here is the simple java download file from URL example program. It shows both ways to download file from URL in java.
JavaDownloadFileFromURL.java
1package com.journaldev.files;
2
3import java.io.BufferedInputStream;
4import java.io.FileOutputStream;
5import java.io.IOException;
6import java.net.URL;
7import java.nio.channels.Channels;
8import java.nio.channels.ReadableByteChannel;
9
10public class JavaDownloadFileFromURL {
11
12 public static void main(String[] args) {
13 String url = "https://www.journaldev.com/sitemap.xml";
14
15 try {
16 downloadUsingNIO(url, "/Users/pankaj/sitemap.xml");
17
18 downloadUsingStream(url, "/Users/pankaj/sitemap_stream.xml");
19 } catch (IOException e) {
20 e.printStackTrace();
21 }
22 }
23
24 private static void downloadUsingStream(String urlStr, String file) throws IOException{
25 URL url = new URL(urlStr);
26 BufferedInputStream bis = new BufferedInputStream(url.openStream());
27 FileOutputStream fis = new FileOutputStream(file);
28 byte[] buffer = new byte[1024];
29 int count=0;
30 while((count = bis.read(buffer,0,1024)) != -1)
31 {
32 fis.write(buffer, 0, count);
33 }
34 fis.close();
35 bis.close();
36 }
37
38 private static void downloadUsingNIO(String urlStr, String file) throws IOException {
39 URL url = new URL(urlStr);
40 ReadableByteChannel rbc = Channels.newChannel(url.openStream());
41 FileOutputStream fos = new FileOutputStream(file);
42 fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
43 fos.close();
44 rbc.close();
45 }
46
47}
downloadUsingStream: 在这个方法中,我们正在使用URLopenStream
方法来创建输入流,然后我们正在使用输入流来读取输入流的数据并写到文件中。 downloadUsingNIO:在这个从URL方法下载的文件中,我们正在从URL流数据创建字节频道,然后使用输出流来写到文件中。
您可以从我们的 GitHub 存储库中查阅更多 Java IO 示例。