URLからファイルをJavaでダウンロードする
今日は、JavaでURLからファイルをダウンロードする方法を学びます。java.net.URLのopenStream()メソッドを使用して、JavaプログラムでURLからファイルをダウンロードすることができます。Java NIOチャンネルまたはJava IO入力ストリームを使用して、URLのオープンストリームからデータを読み取り、それをファイルに保存することができます。
URLからファイルをJavaでダウンロードする
以下は、URLからファイルをダウンロードするためのシンプルなJavaプログラムです。このプログラムでは、JavaでURLからファイルをダウンロードする2つの方法が示されています。JavaDownloadFileFromURL.java
package com.scdev.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();
}
}
downloadUsingStream: このJavaのメソッドでは、URLのopenStreamメソッドを使用して入力ストリームを作成します。そして、ファイル出力ストリームを使用して入力ストリームからデータを読み取り、ファイルに書き込みます。
downloadUsingNIO: このURLからのファイルダウンロードのメソッドでは、URLのストリームデータからバイトチャネルを作成します。その後、ファイル出力ストリームを使用してファイルに書き込みます。どちらの方法でも、JavaプログラムでファイルをURLからダウンロードすることができます。パフォーマンスを求める場合は、両方の方法を使用して分析し、自分のニーズに合った方法を選択してください。
弊社のGitHubリポジトリからもっとJava IOの例を取得することができます。