Class FileUtil


  • public class FileUtil
    extends java.lang.Object
    File utility class.
    • Field Detail

      • LOGID

        private static final LogIDs LOGID
      • DIR_SEP

        public static final java.lang.String DIR_SEP
      • RESERVED_FILE_HANDLE_COUNT

        private static final int RESERVED_FILE_HANDLE_COUNT
        See Also:
        Constant Field Values
      • first_reservation

        private static boolean first_reservation
      • is_my_lock_file

        private static boolean is_my_lock_file
      • reserved_file_handles

        private static final java.util.List reserved_file_handles
      • class_mon

        private static final AEMonitor class_mon
      • reflectOnUsableSpace

        private static final java.lang.reflect.Method reflectOnUsableSpace
      • mPath_getFileStore

        private static final java.lang.reflect.Method mPath_getFileStore
      • mToPath

        private static final java.lang.reflect.Method mToPath
      • char_conversion_mapping

        private static char[] char_conversion_mapping
      • fileHandling

        private static final FileHandler fileHandling
      • sce_checked

        private static boolean sce_checked
        Gets the encoding that should be used when writing script files (currently only tested for windows as this is where an issue can arise...) We also only test based on the user-data directory name to see if an explicit encoding switch is requried...
      • script_encoding

        private static java.lang.String script_encoding
    • Constructor Detail

      • FileUtil

        public FileUtil()
    • Method Detail

      • areFilePathsIdentical

        public static boolean areFilePathsIdentical​(java.io.File f1,
                                                    java.io.File f2)
      • reallyExists

        public static boolean reallyExists​(java.io.File file)
        Verifies the case of the file.name
        Parameters:
        file -
        Returns:
      • getCanonicalFileSafe

        public static java.io.File getCanonicalFileSafe​(java.io.File file)
        Preserves the case of the file.name when the file exists but differs in case
        Parameters:
        file -
        Returns:
      • getCanonicalPathSafe

        public static java.lang.String getCanonicalPathSafe​(java.io.File file)
        Preserves the case of the file.name when the file exists but differs in case
        Parameters:
        file -
        Returns:
      • isAncestorOf

        public static boolean isAncestorOf​(java.io.File _parent,
                                           java.io.File _child)
      • canonise

        public static java.io.File canonise​(java.io.File file)
      • getCanonicalFileName

        public static java.lang.String getCanonicalFileName​(java.lang.String filename)
      • getUserFile

        public static java.io.File getUserFile​(java.lang.String filename)
      • getApplicationFile

        public static java.io.File getApplicationFile​(java.lang.String filename)
        Get a file relative to this program's install directory.

        On Windows, this is usually %Program Files%\[AppName]\[filename]
        On *nix, this is usually the [Launch Dir]/[filename]
        On Mac, this is usually "/Applications/.[AppName]/[filename]"

      • recursiveDelete

        public static boolean recursiveDelete​(java.io.File f)
        Deletes the given dir and all files/dirs underneath
      • recursiveDeleteNoCheck

        public static boolean recursiveDeleteNoCheck​(java.io.File f)
      • getFileOrDirectorySize

        public static long getFileOrDirectorySize​(java.io.File file)
      • recursiveEmptyDirDelete

        protected static void recursiveEmptyDirDelete​(java.io.File f,
                                                      java.util.Set ignore_set,
                                                      boolean log_warnings)
      • convertOSSpecificChars

        public static java.lang.String convertOSSpecificChars​(java.lang.String file_name_in,
                                                              boolean is_folder)
      • writeResilientConfigFile

        public static void writeResilientConfigFile​(java.lang.String file_name,
                                                    java.util.Map data)
      • writeResilientFile

        public static void writeResilientFile​(java.io.File file,
                                              java.util.Map data)
      • writeResilientFileWithResult

        public static boolean writeResilientFileWithResult​(java.io.File parent_dir,
                                                           java.lang.String file_name,
                                                           java.util.Map data)
      • writeResilientFile

        public static void writeResilientFile​(java.io.File parent_dir,
                                              java.lang.String file_name,
                                              java.util.Map data,
                                              boolean use_backup)
      • writeResilientFile

        public static void writeResilientFile​(java.io.File parent_dir,
                                              java.lang.String file_name,
                                              java.util.Map data,
                                              boolean use_backup,
                                              boolean copy_to_backup)
      • writeResilientFile

        private static boolean writeResilientFile​(java.io.File parent_dir,
                                                  java.lang.String file_name,
                                                  java.util.Map data)
      • resilientConfigFileExists

        public static boolean resilientConfigFileExists​(java.lang.String name)
      • readResilientConfigFile

        public static java.util.Map readResilientConfigFile​(java.lang.String file_name)
        Returns:
        Map read from config file, or empty HashMap if error
      • readResilientConfigFile

        public static java.util.Map readResilientConfigFile​(java.lang.String file_name,
                                                            boolean use_backups)
        Returns:
        Map read from config file, or empty HashMap if error
      • readResilientFile

        public static java.util.Map readResilientFile​(java.io.File file)
        Returns:
        Map read from config file, or empty HashMap if error
      • readResilientFile

        public static java.util.Map readResilientFile​(java.io.File parent_dir,
                                                      java.lang.String file_name,
                                                      boolean use_backup)
        Returns:
        Map read from config file, or empty HashMap if error
      • readResilientFile

        public static java.util.Map readResilientFile​(java.io.File parent_dir,
                                                      java.lang.String file_name,
                                                      boolean use_backup,
                                                      boolean intern_keys)
        Parameters:
        parent_dir -
        file_name -
        use_backup -
        intern_keys -
        Returns:
        Map read from config file, or empty HashMap if error
      • readResilientFileSupport

        private static java.util.Map readResilientFileSupport​(java.io.File parent_dir,
                                                              java.lang.String file_name,
                                                              boolean attempt_recovery,
                                                              boolean intern_keys)
      • readResilientFile

        private static java.util.Map readResilientFile​(java.lang.String original_file_name,
                                                       java.io.File parent_dir,
                                                       java.lang.String file_name,
                                                       int fail_count,
                                                       boolean recovery_mode,
                                                       boolean skip_key_intern)
      • deleteResilientFile

        public static void deleteResilientFile​(java.io.File file)
      • deleteResilientConfigFile

        public static void deleteResilientConfigFile​(java.lang.String name)
      • getReservedFileHandles

        private static void getReservedFileHandles()
      • releaseReservedFileHandles

        private static void releaseReservedFileHandles()
      • isMyFileLock

        public static boolean isMyFileLock()
      • backupFile

        public static void backupFile​(java.lang.String _filename,
                                      boolean _make_copy)
        Backup the given file to filename.bak, removing the old .bak file if necessary. If _make_copy is true, the original file will copied to backup, rather than moved.
        Parameters:
        _filename - name of file to backup
        _make_copy - copy instead of move
      • backupFile

        public static void backupFile​(java.io.File _file,
                                      boolean _make_copy)
        Backup the given file to filename.bak, removing the old .bak file if necessary. If _make_copy is true, the original file will copied to backup, rather than moved.
        Parameters:
        _file - file to backup
        _make_copy - copy instead of move
      • copyFileWithDates

        public static boolean copyFileWithDates​(java.io.File from_file,
                                                java.io.File to_file)
        Copy the given source file to the given destination file. Returns file copy success or not.
        Parameters:
        _source - source file
        _dest - destination file
        Returns:
        true if file copy successful, false if copy failed
      • copyFile

        public static boolean copyFile​(java.io.File _source,
                                       java.io.File _dest)
      • copyFileWithException

        public static void copyFileWithException​(java.io.File _source,
                                                 java.io.File _dest)
                                          throws java.io.IOException
        Throws:
        java.io.IOException
      • copyFile

        public static boolean copyFile​(java.io.File _source,
                                       java.io.OutputStream _dest,
                                       boolean closeInputStream)
      • copyFile

        public static void copyFile​(java.io.InputStream _source,
                                    java.io.File _dest)
                             throws java.io.IOException
        copys the input stream to the file. always closes the input stream
        Parameters:
        _source -
        _dest -
        Throws:
        java.io.IOException
      • copyFile

        public static void copyFile​(java.io.InputStream _source,
                                    java.io.File _dest,
                                    boolean _close_input_stream)
                             throws java.io.IOException
        Throws:
        java.io.IOException
      • copyFile

        public static void copyFile​(java.io.InputStream is,
                                    java.io.OutputStream os)
                             throws java.io.IOException
        Throws:
        java.io.IOException
      • copyFile

        public static void copyFile​(java.io.InputStream is,
                                    java.io.OutputStream os,
                                    boolean closeInputStream)
                             throws java.io.IOException
        Throws:
        java.io.IOException
      • copyFileOrDirectory

        public static void copyFileOrDirectory​(java.io.File from_file_or_dir,
                                               java.io.File to_parent_dir)
                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • getFileOrBackup

        public static java.io.File getFileOrBackup​(java.lang.String _filename)
        Returns the file handle for the given filename or it's equivalent .bak backup file if the original doesn't exist or is 0-sized. If neither the original nor the backup are available, a null handle is returned.
        Parameters:
        _filename - root name of file
        Returns:
        file if successful, null if failed
      • getJarFileFromClass

        public static java.io.File getJarFileFromClass​(java.lang.Class cla)
      • getJarFileFromURL

        public static java.io.File getJarFileFromURL​(java.lang.String url_str)
      • renameFile

        public static boolean renameFile​(java.io.File from_file,
                                         java.io.File to_file)
      • renameFile

        public static boolean renameFile​(java.io.File from_file,
                                         java.io.File to_file,
                                         FileUtil.ProgressListener pl)
      • renameFile

        public static boolean renameFile​(java.io.File from_file,
                                         java.io.File to_file,
                                         boolean fail_on_existing_directory)
      • renameFile

        public static boolean renameFile​(java.io.File from_file,
                                         java.io.File to_file,
                                         boolean fail_on_existing_directory,
                                         java.io.FileFilter file_filter,
                                         FileUtil.ProgressListener pl)
      • renameFileSupport

        private static boolean renameFileSupport​(java.io.File from_file,
                                                 java.io.File to_file,
                                                 boolean fail_on_existing_directory,
                                                 java.io.FileFilter file_filter,
                                                 FileUtil.ProgressListener pl)
      • getFileStore

        public static java.lang.Object getFileStore​(java.io.File file)
      • getFileStoreNames

        public static java.lang.String[] getFileStoreNames​(java.io.File... files)
      • reallyCopyFile

        private static boolean reallyCopyFile​(java.io.File from_file,
                                              java.io.File to_file,
                                              FileUtil.ProgressListener pl)
      • newFileInputStream

        public static java.io.FileInputStream newFileInputStream​(java.io.File from_file)
                                                          throws java.io.FileNotFoundException
        Throws:
        java.io.FileNotFoundException
      • newFileOutputStream

        public static java.io.FileOutputStream newFileOutputStream​(java.io.File file)
                                                            throws java.io.FileNotFoundException
        Throws:
        java.io.FileNotFoundException
      • newFileOutputStream

        public static java.io.FileOutputStream newFileOutputStream​(java.io.File file,
                                                                   boolean append)
                                                            throws java.io.FileNotFoundException
        Throws:
        java.io.FileNotFoundException
      • writeStringAsFile

        public static boolean writeStringAsFile​(java.io.File file,
                                                java.lang.String text)
      • writeStringAsFile

        public static boolean writeStringAsFile​(java.io.File file,
                                                java.lang.String text,
                                                java.lang.String charset)
      • writeBytesAsFile

        public static void writeBytesAsFile​(java.lang.String filename,
                                            byte[] file_data)
      • writeBytesAsFile2

        public static boolean writeBytesAsFile2​(java.lang.String filename,
                                                byte[] file_data)
      • deleteWithRecycle

        public static boolean deleteWithRecycle​(java.io.File file,
                                                boolean force_no_recycle)
      • translateMoveFilePath

        public static java.lang.String translateMoveFilePath​(java.lang.String old_root,
                                                             java.lang.String new_root,
                                                             java.lang.String file_to_move)
      • mkdirs

        public static boolean mkdirs​(java.io.File f)
        Makes Directories as long as the directory isn't directly in Volumes (OSX)
        Parameters:
        f -
        Returns:
      • getExtension

        public static java.lang.String getExtension​(java.lang.String fName)
        Gets the extension of a file name, ensuring we don't go into the path
        Parameters:
        fName - File name
        Returns:
        extension, with the '.'
      • readFileAsString

        public static java.lang.String readFileAsString​(java.io.File file,
                                                        int size_limit,
                                                        java.lang.String charset)
                                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • readFileAsString

        public static java.lang.String readFileAsString​(java.io.File file,
                                                        int size_limit)
                                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • readGZippedFileAsString

        public static java.lang.String readGZippedFileAsString​(java.io.File file,
                                                               int size_limit)
                                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • readInputStreamAsString

        public static java.lang.String readInputStreamAsString​(java.io.InputStream is,
                                                               int size_limit)
                                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • readInputStreamAsString

        public static java.lang.String readInputStreamAsString​(java.io.InputStream is,
                                                               int size_limit,
                                                               java.lang.String charSet)
                                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • readInputStreamAsString

        public static java.lang.String readInputStreamAsString​(java.io.InputStream is,
                                                               int size_limit,
                                                               int timeoutMillis,
                                                               java.lang.String charSet)
                                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • readInputStreamAsStringWithTruncation

        public static java.lang.String readInputStreamAsStringWithTruncation​(java.io.InputStream is,
                                                                             int size_limit)
                                                                      throws java.io.IOException
        Throws:
        java.io.IOException
      • readFileEndAsString

        public static java.lang.String readFileEndAsString​(java.io.File file,
                                                           int size_limit,
                                                           java.lang.String charset)
                                                    throws java.io.IOException
        Throws:
        java.io.IOException
      • readInputStreamAsByteArray

        public static byte[] readInputStreamAsByteArray​(java.io.InputStream is)
                                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • readInputStreamAsByteArray

        public static byte[] readInputStreamAsByteArray​(java.io.InputStream is,
                                                        int size_limit)
                                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • readFileAsByteArray

        public static byte[] readFileAsByteArray​(java.io.File file)
                                          throws java.io.IOException
        Throws:
        java.io.IOException
      • getUsableSpaceSupported

        public static boolean getUsableSpaceSupported()
      • getUsableSpace

        public static long getUsableSpace​(java.io.File f)
      • canReallyWriteToAppDirectory

        public static boolean canReallyWriteToAppDirectory()
      • canWriteToDirectory

        public static boolean canWriteToDirectory​(java.io.File dir)
      • log

        public static void log​(java.lang.String str)
      • log

        public static void log​(java.lang.String str,
                               java.lang.Throwable error)
      • getScriptCharsetEncoding

        public static java.lang.String getScriptCharsetEncoding()
      • newFile

        public static java.io.File newFile​(java.lang.String parent,
                                           java.lang.String... subDirs)
      • newFile

        public static java.io.File newFile​(java.io.File parent_file,
                                           java.lang.String... subDirs)
      • newFile

        public static java.io.File newFile​(java.net.URI uri)
      • newFileAccessor

        public static FMFileAccess.FileAccessor newFileAccessor​(java.io.File file,
                                                                java.lang.String access_mode)
                                                         throws java.io.FileNotFoundException
        Throws:
        java.io.FileNotFoundException
      • containsPathSegment

        public static boolean containsPathSegment​(java.io.File f,
                                                  java.lang.String path,
                                                  boolean caseSensitive)
        Returns:
        File.getAbsolutePath().contains(File.separator + path + File.separator)
      • getRelativePath

        public static java.lang.String getRelativePath​(java.io.File parentDir,
                                                       java.io.File file)
        Returns:
        path string relative to parentDir. null if file is not in parentDir. Empty String if file is parentDir.