Java如何从URL中下载文件呢?
Java从URL下载文件的方法
URL下载文件是我们做爬虫工作常用的操作,那么Java如何实现这一需求,下文将一一道来,如下所示:实现思路:
我们可借助
java.net.URL中的openStream()
方法从url中下载文件 例:
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 = "http://www.java265.com/index.html";
try {
downloadUsingNIO(url, "d:\tmp\test.html");
downloadUsingStream(url, "d:\tmp\test.html");
} 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();
}
}
/*相关说明:
downloadUsingStream
:从URL下载java文件的方法中
使用URL openStream方法来创建输入流
然后使用文件输出流从输入流中读取数据并写入文件
downloadUsingNIO
:在这个URL方法的下载文件中,
从URL流数据创建字节通道
然后使用文件输出流将其写入文件
*/
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。