Scaricare un file da internet in Java
Vi propongo due metodi per scaricare un file da internet in Java.
Il primo caso è usando le Java NIO, e quindi non servono librerie esterne:
public class Main {
public static void main(String[] args) {
String remoteFile = "ftp://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest";
String localFile = "/home/matte/Desktop/file.txt";
try {
URL website = new URL(remoteFile);
try (
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream(localFile)) {
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
}
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
}
Il secondo prevede l'uso delle libreria Apache Commons IO, ed io lo preferisco:
public class Main {
public static void main(String[] args) {
String remoteFile = "ftp://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest";
String localFile = "/home/matte/Desktop/file.txt";
try {
FileUtils.copyURLToFile(new URL(remoteFile), new File(localFile), 20000, 20000);
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
}
Come vedete la sintassi è molto più compatta; in sostanza usiamo il meteodo copyURLToFile della classe FileUtils passandogli quattro parametri:
- l'url remoto
- il file locale
- timeout di connessione
- timeout di lettura
Se usate Maven, per installare la libreria vi basta aggiungere questa dipendenza:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
Enjoy!
java java nio apache commons maven
Commentami!