Scaricare un file da internet in Java

Mattepuffo's logo
Scaricare un file da internet in Java

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!


Condividi

Commentami!