Télécharger le fichier en Java
-
Télécharger un fichier à l’aide du package
java.nio
en Java -
Télécharger un fichier à l’aide de
FileUtils.copyURLToFile()
en Java -
Télécharger un fichier à l’aide de
Files.copy()
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);
}
}
}
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