Java でファイルをダウンロード

Rupam Yadav 2023年10月12日
  1. Java で java.nio パッケージを使用してファイルをダウンロードする
  2. Java で FileUtils.copyURLToFile() を使用してファイルをダウンロードする
  3. Java で Files.copy() を使用してファイルをダウンロードする
Java でファイルをダウンロード

この記事では、さまざまな方法を使用して 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 のオブジェクトを作成します。次に、ストリームを開いてオンラインリソースからバイトを取得し、inputSteamcopy() に渡します。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 Yadav
Rupam Yadav avatar Rupam Yadav avatar

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