In this post, I am going to explain how to write the content of an InputStream to a file.
Approach 1: Using InputStream read method.
public static void writeInputStreamToAFile1(final InputStream inputStream, final String filePath)
throws IOException {
checkInput(inputStream, filePath);
File newFile = new File(filePath);
// create parent dirs if necessary
newFile.getParentFile().mkdirs();
newFile.createNewFile();
try (FileOutputStream outputStream = new FileOutputStream(newFile, false)) {
int read;
byte[] bytes = new byte[65535];
while ((read = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
}
}
Approach 2: Using Files.copy() method.
public static void writeInputStreamToAFile2(final InputStream inputStream, final String filePath)
throws IOException {
checkInput(inputStream, filePath);
File newFile = new File(filePath);
// create parent dirs if necessary
newFile.getParentFile().mkdirs();
newFile.createNewFile();
Files.copy(inputStream, newFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
}
Approach 3: Using InputStream#transferTo method. This method is introduced in Java9.
public static void writeInputStreamToAFile3(final InputStream inputStream, final String filePath)
throws IOException {
checkInput(inputStream, filePath);
File newFile = new File(filePath);
// create parent dirs if necessary
newFile.getParentFile().mkdirs();
newFile.createNewFile();
try (OutputStream output = new FileOutputStream(newFile, false)) {
inputStream.transferTo(output);
}
}
Find the below working application.
InputStreamToAFile.java
package com.sample.app;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
public class InputStreamToAFile {
private static void checkInput(InputStream inputStream, String filePath) {
if (inputStream == null) {
throw new IllegalArgumentException("inputStream is null");
}
if (filePath == null) {
throw new IllegalArgumentException("filePath is null");
}
}
public static void writeInputStreamToAFile1(final InputStream inputStream, final String filePath)
throws IOException {
checkInput(inputStream, filePath);
File newFile = new File(filePath);
// create parent dirs if necessary
newFile.getParentFile().mkdirs();
newFile.createNewFile();
try (FileOutputStream outputStream = new FileOutputStream(newFile, false)) {
int read;
byte[] bytes = new byte[65535];
while ((read = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
}
}
public static void writeInputStreamToAFile2(final InputStream inputStream, final String filePath)
throws IOException {
checkInput(inputStream, filePath);
File newFile = new File(filePath);
// create parent dirs if necessary
newFile.getParentFile().mkdirs();
newFile.createNewFile();
Files.copy(inputStream, newFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
}
public static void writeInputStreamToAFile3(final InputStream inputStream, final String filePath)
throws IOException {
checkInput(inputStream, filePath);
File newFile = new File(filePath);
// create parent dirs if necessary
newFile.getParentFile().mkdirs();
newFile.createNewFile();
try (OutputStream output = new FileOutputStream(newFile, false)) {
inputStream.transferTo(output);
}
}
public static void main(String[] args) throws IOException {
ByteArrayInputStream bios1 = new ByteArrayInputStream(new String("Hello World").getBytes());
ByteArrayInputStream bios2 = new ByteArrayInputStream(new String("Hello World").getBytes());
ByteArrayInputStream bios3 = new ByteArrayInputStream(new String("Hello World").getBytes());
String file1 = "/Users/Shared/files/file1.txt";
String file2 = "/Users/Shared/files/file2.txt";
String file3 = "/Users/Shared/files/file3.txt";
writeInputStreamToAFile1(bios1, file1);
writeInputStreamToAFile1(bios2, file2);
writeInputStreamToAFile1(bios3, file3);
}
}
Run above application, you can confirm that three files file1, file2 and file3 created with the content of inputstream.
You may like
file and stream programs in Java
check whether a file is executable or not in Java
Check whether a directory has some files or not
Check given path is a file and not a symbolic link in Java
Check given path is a directory and not a symbolic link in Java
No comments:
Post a Comment