X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fcommons%2Ffile%2FIOHelper.java;h=e7ee659e8b729acb282fe14821e79691487c7176;hb=846af2def5b489670668b978e4ea703c8dfb22b6;hp=97d3b44252e0d9f99fb42f6a32d9c7ba1c9c09a2;hpb=26f09b1ebcafae67855b55ad588d5332a107d202;p=svjatoslav_commons.git diff --git a/src/main/java/eu/svjatoslav/commons/file/IOHelper.java b/src/main/java/eu/svjatoslav/commons/file/IOHelper.java old mode 100644 new mode 100755 index 97d3b44..e7ee659 --- a/src/main/java/eu/svjatoslav/commons/file/IOHelper.java +++ b/src/main/java/eu/svjatoslav/commons/file/IOHelper.java @@ -1,10 +1,10 @@ /* * 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; @@ -14,9 +14,38 @@ import java.io.FileInputStream; 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 { @@ -27,12 +56,30 @@ public class IOHelper { 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 true 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 {