从URL下载Java文件
今天我们将学习如何在Java中从URL下载文件。我们可以使用java.net.URL的openStream()方法在Java程序中从URL下载文件。我们可以使用Java NIO Channels或Java IO InputStream从URL打开的流中读取数据,然后将其保存到文件中。
从URL下载Java文件
这是一个简单的Java从URL下载文件的例子程序。它展示了Java中从URL下载文件的两种方式。JavaDownloadFileFromURL.java
package com.Olivia.files;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
public class JavaDownloadFileFromURL {
public static void main(String[] args) {
String url = "https://www.scdev.com/sitemap.xml";
try {
downloadUsingNIO(url, "/Users/scdev/sitemap.xml");
downloadUsingStream(url, "/Users/scdev/sitemap_stream.xml");
} catch (IOException e) {
e.printStackTrace();
}
}
private static void downloadUsingStream(String urlStr, String file) throws IOException{
URL url = new URL(urlStr);
BufferedInputStream bis = new BufferedInputStream(url.openStream());
FileOutputStream fis = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int count=0;
while((count = bis.read(buffer,0,1024)) != -1)
{
fis.write(buffer, 0, count);
}
fis.close();
bis.close();
}
private static void downloadUsingNIO(String urlStr, String file) throws IOException {
URL url = new URL(urlStr);
ReadableByteChannel rbc = Channels.newChannel(url.openStream());
FileOutputStream fos = new FileOutputStream(file);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
fos.close();
rbc.close();
}
}
使用Stream进行下载:在这个Java下载文件的方法中,我们使用URL的openStream方法创建输入流。然后我们使用文件输出流从输入流中读取数据并写入文件中。 使用NIO进行下载:在这个从URL下载文件的方法中,我们从URL流数据中创建字节通道。然后使用文件输出流将其写入文件中。您可以选择使用其中任一种方法在Java程序中下载文件。如果您关注性能方面,可以使用这两种方法进行分析,看看哪种方法适合您的需求。
你可以从我们的GitHub存储库中查看更多的Java IO示例。