Java でファイルをダウンロード
-
Java で
java.nio
パッケージを使用してファイルをダウンロードする -
Java で
FileUtils.copyURLToFile()
を使用してファイルをダウンロードする -
Java で
Files.copy()
を使用してファイルをダウンロードする
この記事では、さまざまな方法を使用して Java でファイルをダウンロードする方法について説明します。以下に、Java でファイルをダウンロードする 4つの方法を示します。私たちの主な焦点は、例で使用する URL からファイルをダウンロードすることだけです。
Java で java.nio
パッケージを使用してファイルをダウンロードする
このチュートリアルの最初の例では、Java の従来の java.io
の改良された高度な代替手段である java.nio
パッケージを使用しています。nio
の部分は New Input/Output
の略で、以前のパッケージよりも優れた機能を備えていることを示しています。java.nio
は、使用できる新しいネットワークメソッドを提供します。
次のコードでは、最初に、ファイルをダウンロードする URL を使用して URL
オブジェクト fetchWebsite
を作成します。次に、fetchWebsite
からストリームを読み取るチャネルを構築し、Channels
クラスの newChannel()
メソッドを呼び出します。ストリームを作成するには、fetchWebsite
から openStream()
を呼び出します。
次に、指定した名前でローカルにファイルを作成する FileOutputStream
オブジェクト fos
を作成します。最後に、transferFrom()
メソッドを使用してオンラインソースからファイルを取得します。このメソッドは、ソースから fos
に書き込む FileChannel
にデータを転送します。transferFrom()
は 3つの引数を取ります。1つ目は読み取り可能な ByteChannel
オブジェクト、2つ目はファイルの書き込みを開始する位置、つまり 0 番目の位置、最後に転送する最大バイト数です。
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
public class DownloadFile {
public static void main(String[] args) throws IOException {
URL fetchWebsite = new URL(
"https://theswissbay.ch/pdf/Gentoomen%20Library/Programming/Java/Introduction%20to%20Java%20IO.pdf");
ReadableByteChannel readableByteChannel = Channels.newChannel(fetchWebsite.openStream());
try (FileOutputStream fos = new FileOutputStream("C:\\Users\\Downloads\\IntroToJava.pdf")) {
fos.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE);
}
}
}
Java で FileUtils.copyURLToFile()
を使用してファイルをダウンロードする
オンラインソースからファイルをダウンロードする次善の方法は、Apache Commons-IO ライブラリに含まれている FileUtils.copyUrlToFile()
メソッドを使用することです。
次のコードを使用して、プロジェクトに依存関係を含めます。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
以下では、オンラインファイルリソースへのリンクを含む URL
オブジェクトを作成します。次に、ダウンロードしたファイルを保存できるローカルファイルを作成します。これを行うには、File
クラスのオブジェクトを作成し、ファイルの名前と拡張子をコンストラクターに渡します。
最後に、URL
オブジェクトと file
オブジェクトの 2つの引数を取る FileUtils
クラスから copyURLToFile()
メソッドを呼び出します。
import java.io.File;
import java.io.IOException;
import java.net.URL;
import org.apache.commons.io.FileUtils;
public class DownloadFile {
public static void main(String[] args) throws IOException {
URL fetchWebsite = new URL(
"https://theswissbay.ch/pdf/Gentoomen%20Library/Programming/Java/Introduction%20to%20Java%20IO.pdf");
File file = new File("JavaIo.pdf");
FileUtils.copyURLToFile(fetchWebsite, file);
}
}
Java で Files.copy()
を使用してファイルをダウンロードする
最初の例と同じように、java.nio
パッケージを使用しますが、別のメソッドを呼び出します。copy()
は Files
クラスのメソッドです。関数の名前が示すように、指定されたターゲットにファイルをコピーします。
コードには、ファイルのソースを指す URL
オブジェクト fetchWebsite
があります。ファイルをコピーする場所をターゲットに指示する Path
のオブジェクトを作成します。次に、ストリームを開いてオンラインリソースからバイトを取得し、inputSteam
を copy()
に渡します。3つの引数を取るため、1 番目と 2 番目は inputStream
オブジェクトと path
オブジェクトであり、3 番目は CopyOption
またはコピー操作の実行方法を指定します。ファイルがすでに存在する場合は、StandardCopyOption.REPLACE_EXISTING
を使用してファイルを置き換えます。
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
public class DownloadFile {
public static void main(String[] args) throws IOException {
URL fetchWebsite = new URL(
"https://theswissbay.ch/pdf/Gentoomen%20Library/Programming/Java/Introduction%20to%20Java%20IO.pdf");
Path path = Paths.get("JavaIO.pdf");
try (InputStream inputStream = fetchWebsite.openStream()) {
Files.copy(inputStream, path, StandardCopyOption.REPLACE_EXISTING);
}
}
}
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn