Datei in Java herunterladen

Rupam Yadav 12 Oktober 2023
  1. Laden Sie eine Datei mit dem Paket java.nio in Java herunter
  2. Laden Sie eine Datei mit FileUtils.copyURLToFile() in Java herunter
  3. Laden Sie eine Datei mit Files.copy() in Java herunter
Datei in Java herunterladen

In diesem Artikel erfahren wir, wie wir mit verschiedenen Methoden eine Datei in Java herunterladen können. Im Folgenden sehen wir vier Möglichkeiten, eine Datei in Java herunterzuladen. Unser Hauptaugenmerk liegt nur darauf, eine Datei von einer URL herunterzuladen, die wir in den Beispielen verwenden.

Laden Sie eine Datei mit dem Paket java.nio in Java herunter

Das erste Beispiel in diesem Tutorial verwendet das Paket java.nio, das nur eine verbesserte und erweiterte Alternative zu Javas traditionellem java.io ist. Der Teil nio steht für New Input/Output, was besagt, dass es bessere Fähigkeiten hat als das vorherige Paket. java.nio bietet neue Vernetzungsmethoden, die wir nutzen können.

Im folgenden Code erstellen wir zunächst ein URL-Objekt fetchWebsite mit der URL, von der wir unsere Datei herunterladen möchten. Als nächstes konstruieren wir einen Kanal, der den Stream von fetchWebsite liest, und zwar durch Aufrufen der Methode newChannel() der Klasse Channels. Um einen Stream zu erstellen, rufen wir openStream() von fetchWebsite auf.

Nun erstellen wir ein FileOutputStream-Objekt fos, das lokal eine Datei mit dem angegebenen Namen erstellt. Schließlich holen wir die Datei mit der Methode transferFrom() aus der Online-Quelle. Diese Methode überträgt die Daten von der Quelle an einen FileChannel, der in den fos schreibt. transferFrom() nimmt drei Argumente an, erstens das readableByteChannel-Objekt, zweitens die Position, von der aus wir mit dem Schreiben der Datei beginnen wollen, also die 0. Position und zuletzt die maximale Anzahl der zu übertragenden Bytes.

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);
    }
  }
}

Laden Sie eine Datei mit FileUtils.copyURLToFile() in Java herunter

Der nächstbeste Weg, eine Datei von einer Online-Quelle herunterzuladen, ist die Verwendung der Methode FileUtils.copyUrlToFile(), die in der Apache Commons-IO-Bibliothek enthalten ist.

Wir verwenden den folgenden Code, um die Abhängigkeit in das Projekt einzuschließen.

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-io</artifactId>
    <version>1.3.2</version>
</dependency>

Unten erstellen wir ein URL-Objekt mit dem Link zur Online-Dateiressource. Als nächstes erstellen wir eine lokale Datei, in der sich die heruntergeladene Datei befinden kann. Dazu erstellen wir ein Objekt der Klasse File und übergeben den Namen der Datei mit der Erweiterung an ihren Konstruktor.

Zuletzt rufen wir die Methode copyURLToFile() der Klasse FileUtils auf, die zwei Argumente übernimmt: das URL-Objekt und das file-Objekt.

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);
  }
}

Laden Sie eine Datei mit Files.copy() in Java herunter

Genau wie im ersten Beispiel verwenden wir das Paket java.nio, um jedoch eine andere Methode aufzurufen. copy() ist eine Methode der Klasse Files. Wie der Name der Funktion vermuten lässt, kopiert sie eine Datei in das angegebene Ziel.

Im Code haben wir ein URL-Objekt fetchWebsite, das auf die Quelle der Datei verweist. Wir erstellen ein Objekt von Path, das dem Ziel mitteilt, wohin die Datei kopiert werden soll. Als nächstes öffnen wir einen Stream, um die Bytes aus der Online-Ressource zu holen und übergeben den inputSteam an copy(). Da es drei Argumente benötigt, sind das erste und zweite die Objekte inputStream und path, während das dritte die CopyOption oder die Art und Weise angibt, wie der Kopiervorgang ausgeführt werden soll. Wir verwenden StandardCopyOption.REPLACE_EXISTING, um die Datei zu ersetzen, wenn sie bereits existiert.

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 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