[New] Added new methods to FileHelper to read and write byte arrays.
Fixed missing close on existing methods
This commit is contained in:
parent
e587229914
commit
a94981e741
|
@ -46,13 +46,57 @@ import org.slf4j.LoggerFactory;
|
||||||
*/
|
*/
|
||||||
public class FileHelper {
|
public class FileHelper {
|
||||||
|
|
||||||
|
private static final int MAX_FILE_SIZE = 50 * 1024 * 1024;
|
||||||
private static final Logger logger = LoggerFactory.getLogger(FileHelper.class);
|
private static final Logger logger = LoggerFactory.getLogger(FileHelper.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads the contents of a file into a byte array.
|
||||||
|
*
|
||||||
|
* @param file
|
||||||
|
* the file to read
|
||||||
|
*
|
||||||
|
* @return the contents of a file as a string
|
||||||
|
*/
|
||||||
|
public static final byte[] readFile(File file) {
|
||||||
|
if (file.length() > MAX_FILE_SIZE)
|
||||||
|
throw new RuntimeException(String.format("Only allowed to read files up to %s. File too large: %s",
|
||||||
|
humanizeFileSize(MAX_FILE_SIZE), humanizeFileSize(file.length())));
|
||||||
|
|
||||||
|
byte[] data = new byte[(int) file.length()];
|
||||||
|
int pos = 0;
|
||||||
|
|
||||||
|
BufferedInputStream in = null;
|
||||||
|
try {
|
||||||
|
in = new BufferedInputStream(new FileInputStream(file));
|
||||||
|
byte[] bytes = new byte[8192];
|
||||||
|
int read;
|
||||||
|
while ((read = in.read(bytes)) != -1) {
|
||||||
|
System.arraycopy(bytes, 0, data, pos, read);
|
||||||
|
pos += read;
|
||||||
|
}
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
throw new RuntimeException("Filed does not exist " + file.getAbsolutePath());
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException("Could not read file " + file.getAbsolutePath());
|
||||||
|
} finally {
|
||||||
|
if (in != null) {
|
||||||
|
try {
|
||||||
|
in.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
FileHelper.logger.error("Failed to close InputStream: " + e.getLocalizedMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads the contents of a file into a string. Note, no encoding is checked. It is expected to be UTF-8
|
* Reads the contents of a file into a string. Note, no encoding is checked. It is expected to be UTF-8
|
||||||
*
|
*
|
||||||
* @param file
|
* @param file
|
||||||
* the file to read
|
* the file to read
|
||||||
|
*
|
||||||
* @return the contents of a file as a string
|
* @return the contents of a file as a string
|
||||||
*/
|
*/
|
||||||
public static final String readFileToString(File file) {
|
public static final String readFileToString(File file) {
|
||||||
|
@ -86,16 +130,51 @@ public class FileHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Writes the given byte array to the given file
|
||||||
|
*
|
||||||
|
* @param bytes
|
||||||
|
* the data to write to the file
|
||||||
|
* @param dstFile
|
||||||
|
* the path to which to write the data
|
||||||
|
*/
|
||||||
|
public static final void writeToFile(byte[] bytes, File dstFile) {
|
||||||
|
|
||||||
|
BufferedOutputStream out = null;
|
||||||
|
try {
|
||||||
|
|
||||||
|
out = new BufferedOutputStream(new FileOutputStream(dstFile));
|
||||||
|
out.write(bytes);
|
||||||
|
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
throw new RuntimeException("Filed does not exist " + dstFile.getAbsolutePath());
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException("Could not write to file " + dstFile.getAbsolutePath());
|
||||||
|
} finally {
|
||||||
|
if (out != null) {
|
||||||
|
try {
|
||||||
|
out.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
FileHelper.logger.error("Failed to close OutputStream: " + e.getLocalizedMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Writes the string to dstFile
|
* Writes the string to dstFile
|
||||||
*
|
*
|
||||||
|
* @param string
|
||||||
|
* string to write to file
|
||||||
* @param dstFile
|
* @param dstFile
|
||||||
* the file to write to
|
* the file to write to
|
||||||
*/
|
*/
|
||||||
public static final void writeStringToFile(String string, File dstFile) {
|
public static final void writeStringToFile(String string, File dstFile) {
|
||||||
|
|
||||||
|
BufferedWriter bufferedwriter = null;
|
||||||
try {
|
try {
|
||||||
|
|
||||||
BufferedWriter bufferedwriter = new BufferedWriter(new FileWriter(dstFile));
|
bufferedwriter = new BufferedWriter(new FileWriter(dstFile));
|
||||||
bufferedwriter.write(string);
|
bufferedwriter.write(string);
|
||||||
|
|
||||||
bufferedwriter.close();
|
bufferedwriter.close();
|
||||||
|
@ -104,6 +183,14 @@ public class FileHelper {
|
||||||
throw new RuntimeException("Filed does not exist " + dstFile.getAbsolutePath());
|
throw new RuntimeException("Filed does not exist " + dstFile.getAbsolutePath());
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new RuntimeException("Could not write to file " + dstFile.getAbsolutePath());
|
throw new RuntimeException("Could not write to file " + dstFile.getAbsolutePath());
|
||||||
|
} finally {
|
||||||
|
if (bufferedwriter != null) {
|
||||||
|
try {
|
||||||
|
bufferedwriter.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
FileHelper.logger.error("Failed to close BufferedWriter: " + e.getLocalizedMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue