VKP
VKP

Reputation: 658

How to save ZIP file from HttpURLConnection response

I am trying to save the zip file i am receiving from a service call . Below is the code i am trying to save it . Am not getting any error but not getting the extension .

ReadableByteChannel readableByteChannel = Channels.newChannel(url.openStream());
FileOutputStream fileOutputStream = new FileOutputStream("C:\\RandD\\IC");// not allowing 
me to save as IC.zip
FileChannel fileChannel = fileOutputStream.getChannel();
fileOutputStream.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE);

What is the correct way to save the zip file . Looking for most efficient way to do this.

Upvotes: 1

Views: 675

Answers (1)

NoDataFound
NoDataFound

Reputation: 11959

To copy from an URL - pointing to a file, namely a ZIP file - to the file system you can use Files.copy (which exists since Java 7):

try (var is = url.openStream()) {
  Files.copy(is, Path.of("C:/RandD/IC.zip"), StandardCopyOption.REPLACE_EXISTING);
}

This code should work with Java 11 ++ and in Java 8, this could be:

try (InputStream is = url.openStream()) {
  Files.copy(is, Paths.get("C:/RandD/IC.zip"), StandardCopyOption.REPLACE_EXISTING);
}

Even if you want to do something more complicate (eg: open the ZIP file in Java, in which case you can use ... Java NIO2 to do so), you don't need to use channels for that.

Upvotes: 4

Related Questions