Java How to download a file from the Internet
By:Roy.LiuLast updated:2019-08-11
This article shows you how to download a file from an URL by using the following methods :
- Apache Commons IO
- Java NIO
1. Apache Commons IO
1.1 This is still my prefer way to download a file from the Internet, simple and clean. Read the signature :
org.apache.commons.io.FileUtils
//int = number of milliseconds public static void copyURLToFile(URL source, File destination, int connectionTimeout, int readTimeout) throws IOException
1.2 Full example.
HttpUtils.java
package com.mkyong; import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; import java.net.URL; public class HttpUtils { public static void main(String[] args) { String fromFile = "ftp://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest"; String toFile = "F:\\arin.txt"; try { //connectionTimeout, readTimeout = 10 seconds FileUtils.copyURLToFile(new URL(fromFile), new File(toFile), 10000, 10000); } catch (IOException e) { e.printStackTrace();
1.3 Maven
pom.xml
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</version> </dependency>
1.4 Gradle
build.gradle
dependencies { compile 'commons-io:commons-io:2.5'
2. Java NIO
2.1 Try Java 7 NIO example.
URL website = new URL(fromFile); ReadableByteChannel rbc = Channels.newChannel(website.openStream()); FileOutputStream fos = new FileOutputStream(toFile); fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); fos.close(); rbc.close();
2.2 Full example.
HttpUtils.java
package com.mkyong; import java.io.FileOutputStream; import java.io.IOException; import java.net.URL; import java.nio.channels.Channels; import java.nio.channels.ReadableByteChannel; public class HttpUtils { public static void main(String[] args) { String fromFile = "ftp://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest"; String toFile = "F:\\arin.txt"; try { URL website = new URL(fromFile); ReadableByteChannel rbc = Channels.newChannel(website.openStream()); FileOutputStream fos = new FileOutputStream(toFile); fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); fos.close(); rbc.close(); } catch (IOException e) { e.printStackTrace();
References
From:一号门
Previous:Java 8 Tutorials
COMMENTS