Scarica file in Java
-
Scarica un file usando il pacchetto
java.nio
in Java -
Scarica un file usando
FileUtils.copyURLToFile()
in Java -
Scarica un file usando
Files.copy()
in Java
Questo articolo ci insegna come possiamo scaricare un file in Java utilizzando vari metodi. Di seguito, vedremo quattro modi per scaricare un file in Java. Il nostro obiettivo principale è solo quello di scaricare un file da un URL che useremo negli esempi.
Scarica un file usando il pacchetto java.nio
in Java
Il primo esempio in questo tutorial utilizza il pacchetto java.nio
che è solo un’alternativa migliorata e avanzata al tradizionale java.io
di Java. La parte nio
sta per New Input/Output
, che dice che ha capacità migliori rispetto al pacchetto precedente. java.nio
fornisce nuovi metodi di rete che possiamo utilizzare.
Nel codice seguente, per prima cosa, creiamo un oggetto URL
fetchWebsite
con l’URL da cui vogliamo scaricare il nostro file. Successivamente, costruiamo un canale che legge il flusso da fetchWebsite
, e lo facciamo chiamando il metodo newChannel()
della classe Channels
. Per creare uno stream chiamiamo openStream()
da fetchWebsite
.
Ora creiamo un oggetto FileOutputStream
fos
che crea un file localmente con il nome specificato. Infine, otteniamo il file dalla fonte online utilizzando il metodo transferFrom()
. Questo metodo trasferisce i dati dalla sorgente a un FileChannel
che scrive nel fos
. transferFrom()
prende tre argomenti, il primo è l’oggetto readableByteChannel
, il secondo è la posizione da cui vogliamo iniziare a scrivere il file, ovvero la posizione 0 e infine il numero massimo di byte da trasferire.
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);
}
}
}
Scarica un file usando FileUtils.copyURLToFile()
in Java
Il prossimo modo migliore per scaricare un file da una fonte online è utilizzare il metodo FileUtils.copyUrlToFile()
incluso nella libreria Apache Commons-IO.
Usiamo il codice seguente per includere la dipendenza nel progetto.
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
Di seguito, creiamo un oggetto URL
con il collegamento alla risorsa file online. Successivamente, creiamo un file locale in cui può risiedere il file scaricato. Per fare ciò, creiamo un oggetto della classe File
e passiamo il nome del file con l’estensione al suo costruttore.
Infine, chiamiamo il metodo copyURLToFile()
della classe FileUtils
che accetta due argomenti: l’oggetto URL
e l’oggetto 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);
}
}
Scarica un file usando Files.copy()
in Java
Proprio come nel primo esempio, usiamo il pacchetto java.nio
ma per chiamare un metodo diverso. copy()
è un metodo della classe Files
. Come suggerisce il nome della funzione, copia un file nella destinazione specificata.
Nel codice abbiamo un oggetto URL
fetchWebsite
che punta all’origine del file. Creiamo un oggetto di Path
che dice al target dove vogliamo che venga copiato il file. Successivamente, apriamo un flusso per ottenere i byte dalla risorsa online e passiamo inputSteam
a copy()
. Poiché richiede tre argomenti, il primo e il secondo sono gli oggetti inputStream
e path
, mentre il terzo specifica CopyOption
o il modo in cui deve essere eseguita l’operazione di copia. Usiamo StandardCopyOption.REPLACE_EXISTING
per sostituire il file se esiste già.
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