Approach 1: Using InputStream, we can read the data from the given url and OutputStream can be used to write the binary data to disk.
Find the below working application.
BinaryDownloaderDemo.java
package com.sample.app;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
public class BinaryDownloaderDemo {
private static void downloadFile(final String urlToDownload, final String filePath) {
// Create parent folders if not exists
final File file = new File(filePath);
file.getParentFile().mkdirs();
try {
final URL url = new URL(urlToDownload);
final URLConnection urlConnection = url.openConnection();
try (final InputStream inputStream = urlConnection.getInputStream();
final OutputStream outputStream = new FileOutputStream(filePath);) {
byte[] buffer = new byte[65535];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
final String urlToDownlaod = "https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.zip";
downloadFile(urlToDownlaod, "/Users/Shared/softwares/maven/apache-maven-3.8.6-bin.zip");
}
}
Approach 2: Using nio FileChannel# transferFrom method.
BinaryDownloaderDemo2.java
package com.sample.app;
import java.io.File;
import java.io.FileOutputStream;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
public class BinaryDownloaderDemo2 {
private static void downloadFile(final String urlToDownload, final String filePath) {
// Create parent folders if not exists
final File file = new File(filePath);
file.getParentFile().mkdirs();
try {
URL website = new URL(urlToDownload);
try (ReadableByteChannel rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream(filePath);) {
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
final String urlToDownlaod = "https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.zip";
downloadFile(urlToDownlaod, "/Users/Shared/softwares/maven/apache-maven-3.8.6-bin.zip");
}
}
You may like
Count number of lines in a file
Download file from Internet using Java
Get the content of resource file as string
No comments:
Post a Comment