Issue
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.
Solution
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.
Answered By - NoDataFound
Answer Checked By - Timothy Miller (JavaFixing Admin)