diff --git a/src/main/java/ch/eitchnet/utils/helper/FileHelper.java b/src/main/java/ch/eitchnet/utils/helper/FileHelper.java
index a175dc4c5..389572504 100644
--- a/src/main/java/ch/eitchnet/utils/helper/FileHelper.java
+++ b/src/main/java/ch/eitchnet/utils/helper/FileHelper.java
@@ -32,6 +32,7 @@ import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.security.MessageDigest;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -59,15 +60,13 @@ public class FileHelper {
*/
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",
+ throw new RuntimeException(String.format("Only allowed to read files up to %s. File too large: %s", //$NON-NLS-1$
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));
+ try (BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));) {
byte[] bytes = new byte[8192];
int read;
while ((read = in.read(bytes)) != -1) {
@@ -75,17 +74,9 @@ public class FileHelper {
pos += read;
}
} catch (FileNotFoundException e) {
- throw new RuntimeException("Filed does not exist " + file.getAbsolutePath());
+ throw new RuntimeException("Filed does not exist " + file.getAbsolutePath()); //$NON-NLS-1$
} 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());
- }
- }
+ throw new RuntimeException("Could not read file " + file.getAbsolutePath()); //$NON-NLS-1$
}
return data;
@@ -101,32 +92,22 @@ public class FileHelper {
*/
public static final String readFileToString(File file) {
- BufferedReader bufferedReader = null;
- try {
+ try (BufferedReader bufferedReader = new BufferedReader(new FileReader(file));) {
- bufferedReader = new BufferedReader(new FileReader(file));
StringBuilder sb = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
- sb.append(line + "\n");
+ sb.append(line + "\n"); //$NON-NLS-1$
}
return sb.toString();
} catch (FileNotFoundException e) {
- throw new RuntimeException("Filed does not exist " + file.getAbsolutePath());
+ throw new RuntimeException("Filed does not exist " + file.getAbsolutePath()); //$NON-NLS-1$
} catch (IOException e) {
- throw new RuntimeException("Could not read file " + file.getAbsolutePath());
- } finally {
- if (bufferedReader != null) {
- try {
- bufferedReader.close();
- } catch (IOException e) {
- FileHelper.logger.error("Failed to close BufferedReader: " + e.getLocalizedMessage());
- }
- }
+ throw new RuntimeException("Could not read file " + file.getAbsolutePath()); //$NON-NLS-1$
}
}
@@ -140,24 +121,14 @@ public class FileHelper {
*/
public static final void writeToFile(byte[] bytes, File dstFile) {
- BufferedOutputStream out = null;
- try {
+ try (BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(dstFile));) {
- out = new BufferedOutputStream(new FileOutputStream(dstFile));
out.write(bytes);
} catch (FileNotFoundException e) {
- throw new RuntimeException("Filed does not exist " + dstFile.getAbsolutePath());
+ throw new RuntimeException("Filed does not exist " + dstFile.getAbsolutePath()); //$NON-NLS-1$
} 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());
- }
- }
+ throw new RuntimeException("Could not write to file " + dstFile.getAbsolutePath()); //$NON-NLS-1$
}
}
@@ -171,26 +142,15 @@ public class FileHelper {
*/
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.close();
} catch (FileNotFoundException e) {
- throw new RuntimeException("Filed does not exist " + dstFile.getAbsolutePath());
+ throw new RuntimeException("Filed does not exist " + dstFile.getAbsolutePath()); //$NON-NLS-1$
} catch (IOException e) {
- 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());
- }
- }
+ throw new RuntimeException("Could not write to file " + dstFile.getAbsolutePath()); //$NON-NLS-1$
}
}
@@ -223,31 +183,60 @@ public class FileHelper {
boolean done = FileHelper.deleteFiles(file.listFiles(), log);
if (!done) {
worked = false;
- FileHelper.logger.warn("Could not empty the directory: " + file.getAbsolutePath());
+ FileHelper.logger.warn("Could not empty the directory: " + file.getAbsolutePath()); //$NON-NLS-1$
} else {
done = file.delete();
if (done) {
if (log)
- FileHelper.logger.info("Deleted DIR " + file.getAbsolutePath());
+ FileHelper.logger.info("Deleted DIR " + file.getAbsolutePath()); //$NON-NLS-1$
} else {
worked = false;
- FileHelper.logger.warn("Could not delete the directory: " + file.getAbsolutePath());
+ FileHelper.logger.warn("Could not delete the directory: " + file.getAbsolutePath()); //$NON-NLS-1$
}
}
} else {
boolean done = file.delete();
if (done) {
if (log)
- FileHelper.logger.info("Deleted FILE " + file.getAbsolutePath());
+ FileHelper.logger.info("Deleted FILE " + file.getAbsolutePath()); //$NON-NLS-1$
} else {
worked = false;
- FileHelper.logger.warn(("Could not delete the file: " + file.getAbsolutePath()));
+ FileHelper.logger.warn(("Could not delete the file: " + file.getAbsolutePath())); //$NON-NLS-1$
}
}
}
return worked;
}
+ /**
+ * Copy a given list of {@link File Files}. The renameTo method does not allow action across NFS mounted filesystems
+ * this method is the workaround
+ *
+ * @param srcFiles
+ * The source files to copy
+ * @param dstDirectory
+ * The destination where to copy the files
+ * @param checksum
+ * if true, then a MD5 checksum is made to validate copying
+ * @return true if and only if the renaming succeeded; false otherwise
+ */
+ public final static boolean copy(File[] srcFiles, File dstDirectory, boolean checksum) {
+
+ if (!dstDirectory.isDirectory() || !dstDirectory.canWrite()) {
+ String msg = "Destination is not a directory or is not writeable: {0}"; //$NON-NLS-1$
+ throw new IllegalArgumentException(MessageFormat.format(msg, dstDirectory.getAbsolutePath()));
+ }
+
+ for (File srcFile : srcFiles) {
+
+ File dstFile = new File(dstDirectory, srcFile.getName());
+ if (!copy(srcFile, dstFile, checksum))
+ return false;
+ }
+
+ return true;
+ }
+
/**
* Copy a {@link File} The renameTo method does not allow action across NFS mounted filesystems this method is the
* workaround
@@ -262,12 +251,8 @@ public class FileHelper {
*/
public final static boolean copy(File fromFile, File toFile, boolean checksum) {
- BufferedInputStream inBuffer = null;
- BufferedOutputStream outBuffer = null;
- try {
-
- inBuffer = new BufferedInputStream(new FileInputStream(fromFile));
- outBuffer = new BufferedOutputStream(new FileOutputStream(toFile));
+ try (BufferedInputStream inBuffer = new BufferedInputStream(new FileInputStream(fromFile));
+ BufferedOutputStream outBuffer = new BufferedOutputStream(new FileOutputStream(toFile));) {
int theByte = 0;
@@ -283,8 +268,8 @@ public class FileHelper {
String fromFileMD5 = StringHelper.getHexString(FileHelper.hashFileMd5(fromFile));
String toFileMD5 = StringHelper.getHexString(FileHelper.hashFileMd5(toFile));
if (!fromFileMD5.equals(toFileMD5)) {
- FileHelper.logger.error("Copying failed, as MD5 sums are not equal: " + fromFileMD5 + " / "
- + toFileMD5);
+ FileHelper.logger.error(MessageFormat.format(
+ "Copying failed, as MD5 sums are not equal: {0} / {1}", fromFileMD5, toFileMD5)); //$NON-NLS-1$
toFile.delete();
return false;
@@ -293,8 +278,9 @@ public class FileHelper {
// cleanup if files are not the same length
if (fromFile.length() != toFile.length()) {
- FileHelper.logger.error("Copying failed, as new files are not the same length: " + fromFile.length()
- + " / " + toFile.length());
+ String msg = MessageFormat.format("Copying failed, as new files are not the same length: {0} / {1}", //$NON-NLS-1$
+ fromFile.length(), toFile.length());
+ FileHelper.logger.error(msg);
toFile.delete();
return false;
@@ -304,24 +290,6 @@ public class FileHelper {
FileHelper.logger.error(e.getMessage(), e);
return false;
-
- } finally {
-
- if (inBuffer != null) {
- try {
- inBuffer.close();
- } catch (IOException e) {
- FileHelper.logger.error("Error closing BufferedInputStream" + e);
- }
- }
-
- if (outBuffer != null) {
- try {
- outBuffer.close();
- } catch (IOException e) {
- FileHelper.logger.error("Error closing BufferedOutputStream" + e);
- }
- }
}
return true;
@@ -343,11 +311,11 @@ public class FileHelper {
return true;
}
- FileHelper.logger.warn("Simple File.renameTo failed, trying copy/delete...");
+ FileHelper.logger.warn("Simple File.renameTo failed, trying copy/delete..."); //$NON-NLS-1$
// delete if copy was successful, otherwise move will fail
if (FileHelper.copy(fromFile, toFile, true)) {
- FileHelper.logger.info("Deleting fromFile: " + fromFile.getAbsolutePath());
+ FileHelper.logger.info("Deleting fromFile: " + fromFile.getAbsolutePath()); //$NON-NLS-1$
return fromFile.delete();
}
@@ -473,6 +441,7 @@ public class FileHelper {
*
* @return the humanized form of the files size
*/
+ @SuppressWarnings("nls")
public final static String humanizeFileSize(long fileSize) {
if (fileSize < 1024)
return String.format("%d bytes", fileSize);
@@ -496,7 +465,7 @@ public class FileHelper {
* @return the hash as a byte array
*/
public static byte[] hashFileMd5(File file) {
- return FileHelper.hashFile(file, "MD5");
+ return FileHelper.hashFile(file, "MD5"); //$NON-NLS-1$
}
/**
@@ -509,7 +478,7 @@ public class FileHelper {
* @return the hash as a byte array
*/
public static byte[] hashFileSha1(File file) {
- return FileHelper.hashFile(file, "SHA-1");
+ return FileHelper.hashFile(file, "SHA-1"); //$NON-NLS-1$
}
/**
@@ -522,7 +491,7 @@ public class FileHelper {
* @return the hash as a byte array
*/
public static byte[] hashFileSha256(File file) {
- return FileHelper.hashFile(file, "SHA-256");
+ return FileHelper.hashFile(file, "SHA-256"); //$NON-NLS-1$
}
/**
@@ -537,8 +506,7 @@ public class FileHelper {
* @return the hash as a byte array
*/
public static byte[] hashFile(File file, String algorithm) {
- try {
- InputStream fis = new FileInputStream(file);
+ try (InputStream fis = new FileInputStream(file);) {
byte[] buffer = new byte[1024];
MessageDigest complete = MessageDigest.getInstance(algorithm);
@@ -553,7 +521,7 @@ public class FileHelper {
return complete.digest();
} catch (Exception e) {
- throw new RuntimeException("Something went wrong while hashing file: " + file.getAbsolutePath());
+ throw new RuntimeException("Something went wrong while hashing file: " + file.getAbsolutePath()); //$NON-NLS-1$
}
}
@@ -567,23 +535,14 @@ public class FileHelper {
* the bytes to append
*/
public static void appendFilePart(File dstFile, byte[] bytes) {
- FileOutputStream outputStream = null;
- try {
- outputStream = new FileOutputStream(dstFile, true);
+ try (FileOutputStream outputStream = new FileOutputStream(dstFile, true);) {
+
outputStream.write(bytes);
outputStream.flush();
} catch (IOException e) {
- throw new RuntimeException("Could not create and append the bytes to the file " + dstFile.getAbsolutePath());
- } finally {
- if (outputStream != null) {
- try {
- outputStream.close();
- } catch (IOException e) {
- FileHelper.logger.error("Exception while closing FileOutputStream " + e.getLocalizedMessage());
- }
- }
+ throw new RuntimeException("Could not create and append the bytes to the file " + dstFile.getAbsolutePath()); //$NON-NLS-1$
}
}
}