Package arcommon

Class FileUtil


  • public class FileUtil
    extends java.lang.Object
    A collection of miscellaneous file IO methods.
    Terminology in naming is as follows:
       Directory: The directory with its content (Name, number of files, last modified...), but not the path to the directory. Typically not a String, but the directory name (without its path) is a String.
       Path: The path to a directory. A String containing a list of directory name separated by File.separator. Must typically end with a File.separator.
       File name: A String containing the name of a file. May contain the path to the directory, where the file is placed. Must not end with a File.separator.
    • Method Detail

      • calculateDriveName

        public static java.lang.String calculateDriveName​(java.lang.String fileName)
      • calculatePath

        public static java.lang.String calculatePath​(java.lang.String fileName)
      • calculatePathNoIO

        public static java.lang.String calculatePathNoIO​(java.lang.String fileName)
      • calculateExtension

        public static java.lang.String calculateExtension​(java.lang.String fileName)
      • calculateExtension

        public static java.lang.String calculateExtension​(java.lang.String fileName,
                                                          boolean withDot)
      • calculateFileName

        public static java.lang.String calculateFileName​(java.lang.String fileName)
      • calculateFileNameNoIO

        public static java.lang.String calculateFileNameNoIO​(java.lang.String fileName)
      • calculateAllDirectoryNames

        public static java.util.List<java.lang.String> calculateAllDirectoryNames​(java.lang.String fileName)
      • calculateAbsoluteFileName

        public static java.lang.String calculateAbsoluteFileName​(java.lang.String basePath,
                                                                 java.lang.String fileName)
        Returns the absolute file name of fileName relative to basePath.
        The absolute file name is calculated using the File.getCanonicalFile() method.
          See calculateAbsoluteFileNameLocal(String) for details.
        If basePath is null the current directory is use as base.
        All File.separator + File.separator in fileName will be replaced with File.separator ("//" -> "/" and "\" -> "\").
      • isAbsolute

        public static boolean isAbsolute​(java.lang.String fileName)
      • convertTo8Dot3

        public static java.lang.String convertTo8Dot3​(java.lang.String fileName)
      • isPathValid

        public static boolean isPathValid​(java.lang.String path)
      • isFileNameValid

        public static boolean isFileNameValid​(java.lang.String fileName)
      • isFileNameToLong

        public static boolean isFileNameToLong​(java.lang.String fileName)
      • isDirectory

        public static boolean isDirectory​(java.lang.String fileName)
      • calculateFileSystemType

        public static FileUtil.FILE_SYSTEM calculateFileSystemType​(java.lang.String path)
        This method will calculate the file system of path (in a very hacky way) and return it.
        NOTE: This method requires that the path is writable. If it is not writable, UNKNOWN is returned.
        NOTE: This method is slow as it creates and deletes files in path.
        NOTE: This method has NOT been tested on Mac at all. See the uncomment method getFileSystemString(String) above for a method that will return kind of the same information.
      • exists

        public static boolean exists​(java.lang.String fileName)
      • lastModified

        public static long lastModified​(java.lang.String fileName)
      • setLastModified

        public static void setLastModified​(java.lang.String fileName,
                                           long lastModified)
      • size

        public static long size​(java.lang.String fileName)
      • mkdirs

        public static void mkdirs​(java.lang.String path)
      • mkdirs

        public static void mkdirs​(java.io.File path)
      • mkdirs

        public static boolean mkdirs​(java.lang.String path,
                                     boolean throwOnFail)
      • mkdirs

        public static boolean mkdirs​(java.io.File path,
                                     boolean throwOnFail)
      • mkdirsAndFile

        public static void mkdirsAndFile​(java.lang.String fileName)
      • readFile

        public static java.lang.String readFile​(java.lang.String fileName)
      • readFile

        public static java.lang.String readFile​(java.lang.String fileName,
                                                java.lang.String encoding)
      • readFile

        public static java.lang.String readFile​(java.lang.String fileName,
                                                java.lang.String encoding,
                                                int maximumNumberOfBytes)
      • createBufferedReader

        public static java.io.BufferedReader createBufferedReader​(java.lang.String fileName,
                                                                  java.lang.String encoding)
      • readFirstLineInFile

        public static java.lang.String readFirstLineInFile​(java.lang.String fileName)
      • readFirstLineInFile

        public static java.lang.String readFirstLineInFile​(java.lang.String fileName,
                                                           java.lang.String encoding)
      • readLinesInFile

        public static java.util.List<java.lang.String> readLinesInFile​(java.lang.String fileName)
      • readLinesInFile

        public static java.util.List<java.lang.String> readLinesInFile​(java.lang.String fileName,
                                                                       java.lang.String encoding)
      • readLinesInFile

        public static void readLinesInFile​(java.lang.String fileName,
                                           java.lang.String encoding,
                                           java.io.BufferedReader in,
                                           FileUtil.LineReadInterface lineReadInterface)
                                    throws java.io.IOException
        Throws:
        java.io.IOException
      • removeUtf8Bom

        public static java.lang.String removeUtf8Bom​(java.lang.String fileName,
                                                     java.lang.String encoding,
                                                     java.lang.String content,
                                                     boolean warnIfRemoved,
                                                     boolean exceptionOnMismatch)
      • readDataFromFile

        public static byte[] readDataFromFile​(java.lang.String fileName)
        Read all data from fileName and return it.
      • writeFile

        public static void writeFile​(java.lang.String fileName,
                                     java.lang.String content)
      • writeFile

        public static void writeFile​(java.lang.String fileName,
                                     java.lang.String content,
                                     boolean append)
      • writeFile

        public static void writeFile​(java.lang.String fileName,
                                     java.lang.String content,
                                     boolean append,
                                     java.lang.String encoding)
      • writeAppendLinesToFile

        public static void writeAppendLinesToFile​(java.lang.String fileName,
                                                  java.lang.String lines)
      • writeAppendLinesToFile

        public static void writeAppendLinesToFile​(java.lang.String fileName,
                                                  java.lang.String lines,
                                                  java.lang.String encoding)
      • writeLinesToFile

        public static void writeLinesToFile​(java.lang.String fileName,
                                            java.util.Collection<java.lang.String> lines)
      • writeLinesToFile

        public static void writeLinesToFile​(java.lang.String fileName,
                                            java.util.Collection<java.lang.String> lines,
                                            boolean append)
      • writeLinesToFile

        public static void writeLinesToFile​(java.lang.String fileName,
                                            java.util.Collection<java.lang.String> lines,
                                            boolean append,
                                            java.lang.String encoding)
      • createBufferedWriter

        public static java.io.BufferedWriter createBufferedWriter​(java.lang.String fileName,
                                                                  boolean append,
                                                                  java.lang.String encoding)
      • writeLinesToFile

        public static void writeLinesToFile​(java.lang.String fileName,
                                            java.util.Collection<java.lang.String> lines,
                                            boolean append,
                                            java.lang.String encoding,
                                            FileUtil.Newline newline,
                                            boolean endWithNewline)
      • writeDataToFile

        public static void writeDataToFile​(java.lang.String fileName,
                                           byte[] data,
                                           boolean append)
      • calculateNumberedFileName

        public static java.lang.String calculateNumberedFileName​(java.lang.String path,
                                                                 java.lang.String fileName,
                                                                 int number)
      • renameWithCaseChangeFullPath

        public static boolean renameWithCaseChangeFullPath​(java.lang.String fromFileName,
                                                           java.lang.String toFileName,
                                                           boolean throwOnFail)
      • renameWithCaseChange

        public static boolean renameWithCaseChange​(java.lang.String fromFileName,
                                                   java.lang.String toFileName,
                                                   boolean throwOnFail)
      • rename

        public static void rename​(java.lang.String fromFileName,
                                  java.lang.String toFileName)
      • rename

        public static boolean rename​(java.lang.String fromFileName,
                                     java.lang.String toFileName,
                                     boolean throwOnFail)
      • rename

        public static boolean rename​(java.io.File fromFileName,
                                     java.io.File toFileName,
                                     boolean throwOnFail)
      • copy

        public static void copy​(java.lang.String fromFileName,
                                java.lang.String toFileName)
      • copy

        public static void copy​(java.lang.String fromFileName,
                                java.lang.String toFileName,
                                boolean overwriteOnExists)
      • copy

        public static boolean copy​(java.lang.String fromFileName,
                                   java.lang.String toFileName,
                                   boolean overwriteOnExists,
                                   boolean copyLastModified,
                                   boolean throwOnFail)
      • copy

        public static boolean copy​(java.io.BufferedInputStream in,
                                   long inLength,
                                   java.lang.String toFileName,
                                   boolean overwriteOnExists,
                                   boolean throwOnFail)
      • copyDirectoryTree

        public static void copyDirectoryTree​(java.lang.String fromPath,
                                             java.lang.String toPath,
                                             boolean echo)
      • copyDirectoryTree

        public static void copyDirectoryTree​(java.lang.String fromPath,
                                             java.lang.String toPath,
                                             boolean echo,
                                             boolean overwriteOnExists)
      • copyDirectoryTree

        public static boolean copyDirectoryTree​(java.lang.String fromPath,
                                                java.lang.String toPath,
                                                boolean echo,
                                                boolean overwriteOnExists,
                                                boolean copyLastModified,
                                                boolean throwOnFail)
      • delete

        public static void delete​(java.lang.String fileName)
      • delete

        public static boolean delete​(java.lang.String fileName,
                                     boolean throwOnFail)
      • findAllDirectoriesInDirectoryAsList

        public static java.util.List<java.lang.String> findAllDirectoriesInDirectoryAsList​(java.lang.String path,
                                                                                           boolean includeSubdirectories)
      • findAllDirectoriesInDirectoryAsList

        public static java.util.List<java.lang.String> findAllDirectoriesInDirectoryAsList​(java.lang.String path,
                                                                                           boolean includeSubdirectories,
                                                                                           java.util.List<java.lang.String> excludeDirectories)
      • findAllDirectoriesInDirectoryAsList

        public static java.util.List<java.lang.String> findAllDirectoriesInDirectoryAsList​(java.lang.String path,
                                                                                           boolean includeSubdirectories,
                                                                                           java.util.List<java.lang.String> excludeDirectories,
                                                                                           java.lang.String progressStateLabel)
      • findAllDirectoriesInDirectory

        public static FileUtil.DirectoryTree findAllDirectoriesInDirectory​(java.lang.String path,
                                                                           boolean includeSubdirectories,
                                                                           boolean caseSensitive,
                                                                           java.util.List<java.lang.String> excludeDirectories,
                                                                           java.lang.String progressStateLabel)
      • findAllFilesInDirectory

        public static java.util.List<java.lang.String> findAllFilesInDirectory​(java.lang.String path,
                                                                               boolean includeSubdirectories)
      • findAllFilesInDirectory

        public static java.util.List<java.lang.String> findAllFilesInDirectory​(java.lang.String path,
                                                                               boolean includeSubdirectories,
                                                                               boolean caseSensitive)
      • findAllFilesInDirectory

        public static java.util.List<java.lang.String> findAllFilesInDirectory​(java.lang.String path,
                                                                               boolean includeSubdirectories,
                                                                               java.util.List<java.lang.String> excludeDirectories)
      • findAllFilesInDirectory

        public static java.util.List<java.lang.String> findAllFilesInDirectory​(java.lang.String path,
                                                                               boolean includeSubdirectories,
                                                                               boolean caseSensitive,
                                                                               java.util.List<java.lang.String> excludeDirectories)
      • findAllFilesInDirectory

        public static java.util.List<java.lang.String> findAllFilesInDirectory​(java.lang.String path,
                                                                               boolean includeSubdirectories,
                                                                               boolean caseSensitive,
                                                                               java.util.List<java.lang.String> excludeDirectories,
                                                                               java.lang.String progressStateLabel)
      • isSymbolicLink

        public static boolean isSymbolicLink​(java.lang.String fileName)
      • compareFiles

        public static boolean compareFiles​(java.lang.String fileName1,
                                           java.lang.String fileName2)
      • compareFilesEqualsBytes

        public static long compareFilesEqualsBytes​(java.lang.String fileName1,
                                                   java.lang.String fileName2)
        Compares the two files.
        Returns:
        If the files are identical, then the number of bytes compared is returned. If the files are not identical, then the first different byte position is returned negative. On error -1 is returned.
      • getReadable

        public static boolean getReadable​(java.lang.String fileName)
      • setReadable

        public static void setReadable​(java.lang.String fileName,
                                       boolean readable)
      • setReadable

        public static boolean setReadable​(java.lang.String fileName,
                                          boolean readable,
                                          boolean throwOnFail)
      • findExistingParent

        public static java.lang.String findExistingParent​(java.lang.String fileName)
      • getWritable

        public static boolean getWritable​(java.lang.String fileName)
      • setWritable

        public static void setWritable​(java.lang.String fileName,
                                       boolean writable)
      • setWritable

        public static boolean setWritable​(java.lang.String fileName,
                                          boolean writable,
                                          boolean throwOnFail)
      • getExecutable

        public static boolean getExecutable​(java.lang.String fileName)
      • setExecutable

        public static void setExecutable​(java.lang.String fileName,
                                         boolean executable)
      • setExecutable

        public static boolean setExecutable​(java.lang.String fileName,
                                            boolean executable,
                                            boolean throwOnFail)
      • getFreeSpace

        public static long getFreeSpace​(java.lang.String path)
      • checkWriteAccess

        public static boolean checkWriteAccess​(java.lang.String fileName)
        Check for write access using the creation of an actual file.
        See getWritable(String) for details
      • checkForTempFiles

        public static void checkForTempFiles​(java.util.List<java.lang.String> fileNames)
      • getTempPath

        public static java.lang.String getTempPath()
      • currentPath

        public static java.lang.String currentPath()
      • fileContainsText

        public static boolean fileContainsText​(java.lang.String fileName,
                                               java.lang.String text)
      • fileContainsText

        public static boolean fileContainsText​(java.lang.String fileName,
                                               java.lang.String text,
                                               java.lang.String encoding)
      • loadPropertiesFromFile

        public static void loadPropertiesFromFile​(java.lang.String fileName)
        Loads properties from a file and saves them into System properties (System.setProperty(String, String).
        Note: This does NOT overwrite properties that are already set.
      • loadPropertyFile

        public static java.util.Properties loadPropertyFile​(java.lang.String fileName)
      • loadPropertyFile

        public static java.util.Properties loadPropertyFile​(java.lang.String fileName,
                                                            java.lang.String encoding)