Télécharger le fichier en Java

Rupam Yadav 12 octobre 2023
  1. Télécharger un fichier à l’aide du package java.nio en Java
  2. Télécharger un fichier à l’aide de FileUtils.copyURLToFile() en Java
  3. Télécharger un fichier à l’aide de Files.copy() en Java
Télécharger le fichier en Java

Cet article nous apprend comment télécharger un fichier en Java en utilisant différentes méthodes. Ci-dessous, nous verrons quatre façons de télécharger un fichier en Java. Notre objectif principal est uniquement de télécharger un fichier à partir d’une URL que nous utiliserons dans les exemples.

Télécharger un fichier à l’aide du package java.nio en Java

Le premier exemple de ce tutoriel utilise le package java.nio qui n’est qu’une alternative améliorée et avancée au traditionnel java.io de Java. La partie nio signifie New Input/Output, ce qui signifie qu’elle a de meilleures capacités que l’ancien package. java.nio fournit de nouvelles méthodes de mise en réseau que nous pouvons utiliser.

Dans le code suivant, nous créons d’abord un objet URL fetchWebsite avec l’URL à partir de laquelle nous voulons télécharger notre fichier. Ensuite, nous construisons un canal qui lit le flux à partir de fetchWebsite, et nous le faisons en appelant la méthode newChannel() de la classe Channels. Pour créer un flux, nous appelons openStream() à partir de fetchWebsite.

Maintenant, nous créons un objet FileOutputStream fos qui crée un fichier localement avec le nom spécifié. Enfin, nous récupérons le fichier depuis la source en ligne en utilisant la méthode transferFrom(). Cette méthode transfère les données de la source vers un FileChannel qui écrit dans le fos. transferFrom() prend trois arguments, le premier est l’objet readableByteChannel, le deuxième est la position à partir de laquelle nous voulons commencer à écrire le fichier, c’est-à-dire la 0ème position et enfin le nombre maximum d’octets à transférer.

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

Télécharger un fichier à l’aide de FileUtils.copyURLToFile() en Java

La meilleure façon de télécharger un fichier à partir d’une source en ligne est d’utiliser la méthode FileUtils.copyUrlToFile() incluse dans la bibliothèque Apache Commons-IO.

Nous utilisons le code suivant pour inclure la dépendance dans le projet.

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

Ci-dessous, nous créons un objet URL avec le lien vers la ressource de fichier en ligne. Ensuite, nous créons un fichier local où le fichier téléchargé peut résider. Pour ce faire, nous créons un objet de la classe File et passons le nom du fichier avec l’extension dans son constructeur.

Enfin, nous appelons la méthode copyURLToFile() de la classe FileUtils qui prend deux arguments : l’objet URL et l’objet file.

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

Télécharger un fichier à l’aide de Files.copy() en Java

Tout comme le premier exemple, nous utilisons le package java.nio mais pour appeler une méthode différente. copy() est une méthode de la classe Files. Comme le nom de la fonction l’indique, elle copie un fichier vers la cible spécifiée.

Dans le code, nous avons un objet URL fetchWebsite qui pointe vers la source du fichier. Nous créons un objet de Path qui indique à la cible où nous voulons que le fichier soit copié. Ensuite, nous ouvrons un flux pour récupérer les octets de la ressource en ligne et passons le inputSteam à copy(). Comme il prend trois arguments, le premier et le deuxième sont les objets inputStream et Path, tandis que le troisième spécifie la CopyOption ou la manière dont l’opération de copie doit être effectuée. Nous utilisons StandardCopyOption.REPLACE_EXISTING pour remplacer le fichier s’il existe déjà.

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