/*
* Svjatoslav Commons - shared library of common functionality.
- * Copyright (C) 2012, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
- *
+ * Copyright ©2012-2014, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
+ *
* This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public License
- * as published by the Free Software Foundation.
+ * modify it under the terms of version 3 of the GNU Lesser General Public License
+ * or later as published by the Free Software Foundation.
*/
package eu.svjatoslav.commons.file;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.UnsupportedEncodingException;
public class IOHelper {
+ /**
+ * Deletes files and directories recursively. WARNING!!! Follows symlinks!!!
+ *
+ * @param file
+ * directory to delete with entire contents.
+ *
+ * @throws IOException
+ * if filesystem error happens
+ */
+ public static void deleteRecursively(final File file) throws IOException {
+ if (file.isDirectory()) {
+
+ for (final File subFile : file.listFiles())
+ deleteRecursively(subFile);
+
+ if (!file.delete())
+ throw new FileNotFoundException("Failed to delete directory: "
+ + file);
+
+ return;
+ }
+
+ if (file.isFile())
+ if (!file.delete())
+ throw new FileNotFoundException("Failed to delete file: "
+ + file);
+ }
+
public static byte[] getFileContents(final File file)
throws FileNotFoundException, IOException {
return result;
}
+ public static String getFileContentsAsString(final File file)
+ throws FileNotFoundException, IOException {
+ try {
+ return new String(getFileContents(file), "UTF-8");
+ } catch (final UnsupportedEncodingException exception) {
+ throw new RuntimeException(exception);
+ }
+ }
+
/**
* Compares new file content with old file content. If content in equal,
* then leaves file as-is. If content differs, then overrides file with the
* new content.
- *
+ *
+ * @param file
+ * file to potentially overwrite
+ * @param newContent
+ * new content
* @return <code>true</code> if file was overwritten.
+ *
+ * @throws FileNotFoundException
+ * if file is not found.
+ * @throws IOException
+ * if error happens during file IO.
*/
public static boolean overwriteFileIfContentDiffers(final File file,
final byte[] newContent) throws FileNotFoundException, IOException {