Class FileUtils


  • public final class FileUtils
    extends java.lang.Object
    This class contains a few file-related utility functions.
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  FileUtils.OpenFileResult
      Indicates whether a file was successfully opened.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.util.List<java.lang.Character> INVALID_NAME  
      static java.util.List<java.lang.Character> INVALID_PATH
      list of characters not allowed in filenames
    • Constructor Summary

      Constructors 
      Constructor Description
      FileUtils()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void createParentDir​(java.io.File f)
      Tries to create the ancestor directories of file f.
      static void createParentDir​(java.io.File f, java.lang.String eMsg)
      Tries to create the ancestor directories of file f.
      static void createRestrictedDirectory​(java.io.File directory)
      Creates a new directory with minimum permissions.
      static void createRestrictedFile​(java.io.File file, boolean writableByOwner)
      Creates a new file with minimum permissions.
      static void deleteWithErrMesg​(java.io.File f)
      Tries to delete file f.
      static void deleteWithErrMesg​(java.io.File f, java.lang.String eMsg)
      Tries to delete file f.
      static java.lang.String displayablePath​(java.lang.String path)
      Returns a String that is suitable for using in GUI elements for displaying (long) paths to users.
      static java.lang.String displayablePath​(java.lang.String path, int visibleChars)
      Return a String that is suitable for using in GUI elements for displaying paths to users.
      static java.lang.String getContentOfReader​(java.io.Reader r)  
      static java.lang.String getContentOfStream​(java.io.InputStream is)
      utility method which can read from any stream as one long String
      static java.lang.String getContentOfStream​(java.io.InputStream is, java.lang.String encoding)
      utility method which can read from any stream as one long String
      static java.nio.channels.FileLock getFileLock​(java.lang.String path, boolean shared, boolean allowBlock)
      This will return a lock to the file specified.
      static byte[] getFileMD5Sum​(java.io.File file, java.lang.String algorithm)  
      static java.lang.String loadFileAsString​(java.io.File f)  
      static java.lang.String loadFileAsString​(java.io.File f, java.lang.String encoding)  
      static void recursiveDelete​(java.io.File file, java.io.File base)
      Recursively delete everything under a directory.
      static java.lang.String sanitizeFileName​(java.lang.String filename)
      Given an input, return a sanitized form of the input suitable for use as a file/directory name
      static java.lang.String sanitizeFileName​(java.lang.String filename, char substitute)  
      static java.lang.String sanitizePath​(java.lang.String path)
      Clean up a string by removing characters that can't appear in a local file name.
      static java.lang.String sanitizePath​(java.lang.String path, char substitute)  
      static void saveFile​(java.lang.String content, java.io.File f)
      Method to save String as file in UTF-8 encoding.
      static void saveFile​(java.lang.String content, java.io.File f, java.lang.String encoding)
      Method to save String as file in specified encoding/.
      static void showCouldNotOpenDialog​(java.awt.Component frame, java.lang.String message)
      Show a dialog informing the user that the file could not be opened
      static void showCouldNotOpenFileDialog​(java.awt.Component frame, java.lang.String filePath, FileUtils.OpenFileResult reason)
      Show an error dialog indicating the file could not be opened, with a particular reason
      static void showCouldNotOpenFilepathDialog​(java.awt.Component frame, java.lang.String filePath)
      Show a generic error dialog indicating the file could not be opened
      static void showReadOnlyDialog​(java.awt.Component frame)
      Show a dialog informing the user that the file is currently read-only
      static DirectoryValidator.DirectoryCheckResults testDirectoryPermissions​(java.io.File file)
      Ensure that the parent directory of the file exists and that we are able to create and access files within this directory
      static FileUtils.OpenFileResult testFilePermissions​(java.io.File file)
      Verify that a given file object points to a real, accessible plain file.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • INVALID_PATH

        public static final java.util.List<java.lang.Character> INVALID_PATH
        list of characters not allowed in filenames
      • INVALID_NAME

        public static final java.util.List<java.lang.Character> INVALID_NAME
    • Constructor Detail

      • FileUtils

        public FileUtils()
    • Method Detail

      • sanitizePath

        public static java.lang.String sanitizePath​(java.lang.String path)
        Clean up a string by removing characters that can't appear in a local file name.
        Parameters:
        path - the path to sanitize
        Returns:
        a sanitized version of the input which is suitable for using as a file path
      • sanitizePath

        public static java.lang.String sanitizePath​(java.lang.String path,
                                                    char substitute)
      • sanitizeFileName

        public static java.lang.String sanitizeFileName​(java.lang.String filename)
        Given an input, return a sanitized form of the input suitable for use as a file/directory name
        Parameters:
        filename - the filename to sanitize.
        Returns:
        a sanitized version of the input
      • sanitizeFileName

        public static java.lang.String sanitizeFileName​(java.lang.String filename,
                                                        char substitute)
      • createRestrictedDirectory

        public static void createRestrictedDirectory​(java.io.File directory)
                                              throws java.io.IOException
        Creates a new directory with minimum permissions. The directory is not readable or writable by anyone other than the owner. The parent directories are not created; they must exist before this is called.
        Parameters:
        directory - directory to be created
        Throws:
        java.io.IOException - if IO fails
      • createRestrictedFile

        public static void createRestrictedFile​(java.io.File file,
                                                boolean writableByOwner)
                                         throws java.io.IOException
        Creates a new file with minimum permissions. The file is not readable or writable by anyone other than the owner. If writeableByOnwer is false, even the owner can not write to it.
        Parameters:
        file - path to file
        writableByOwner - true if can be writable by owner
        Throws:
        java.io.IOException - if IO fails
      • createParentDir

        public static void createParentDir​(java.io.File f,
                                           java.lang.String eMsg)
                                    throws java.io.IOException
        Tries to create the ancestor directories of file f. Throws an IOException if it can't be created (but not if it was already there).
        Parameters:
        f - file to provide parent directory
        eMsg - - the message to use for the exception. null if the file name is to be used.
        Throws:
        java.io.IOException - if the directory can't be created and doesn't exist.
      • createParentDir

        public static void createParentDir​(java.io.File f)
                                    throws java.io.IOException
        Tries to create the ancestor directories of file f. Throws an IOException if it can't be created (but not if it was already there).
        Parameters:
        f - file which parent will be created
        Throws:
        java.io.IOException - if the directory can't be created and doesn't exist.
      • deleteWithErrMesg

        public static void deleteWithErrMesg​(java.io.File f,
                                             java.lang.String eMsg)
        Tries to delete file f. If the file exists but couldn't be deleted, print an error message to stderr with the file name, or eMsg if eMsg is not null.
        Parameters:
        f - the file to be deleted
        eMsg - the message to print on failure (or null to print the the file name).
      • deleteWithErrMesg

        public static void deleteWithErrMesg​(java.io.File f)
        Tries to delete file f. If the file exists but couldn't be deleted, print an error message to stderr with the file name.
        Parameters:
        f - the file to be deleted
      • testDirectoryPermissions

        public static DirectoryValidator.DirectoryCheckResults testDirectoryPermissions​(java.io.File file)
        Ensure that the parent directory of the file exists and that we are able to create and access files within this directory
        Parameters:
        file - the File representing a Java Policy file to test
        Returns:
        a DirectoryValidator.DirectoryCheckResults object representing the results of the test
      • testFilePermissions

        public static FileUtils.OpenFileResult testFilePermissions​(java.io.File file)
        Verify that a given file object points to a real, accessible plain file.
        Parameters:
        file - the File to verify
        Returns:
        an FileUtils.OpenFileResult representing the accessibility level of the file
      • showReadOnlyDialog

        public static void showReadOnlyDialog​(java.awt.Component frame)
        Show a dialog informing the user that the file is currently read-only
        Parameters:
        frame - a JFrame to act as parent to this dialog
      • showCouldNotOpenFilepathDialog

        public static void showCouldNotOpenFilepathDialog​(java.awt.Component frame,
                                                          java.lang.String filePath)
        Show a generic error dialog indicating the file could not be opened
        Parameters:
        frame - a JFrame to act as parent to this dialog
        filePath - a String representing the path to the file we failed to open
      • showCouldNotOpenFileDialog

        public static void showCouldNotOpenFileDialog​(java.awt.Component frame,
                                                      java.lang.String filePath,
                                                      FileUtils.OpenFileResult reason)
        Show an error dialog indicating the file could not be opened, with a particular reason
        Parameters:
        frame - a JFrame to act as parent to this dialog
        filePath - a String representing the path to the file we failed to open
        reason - a FileUtils.OpenFileResult specifying more precisely why we failed to open the file
      • showCouldNotOpenDialog

        public static void showCouldNotOpenDialog​(java.awt.Component frame,
                                                  java.lang.String message)
        Show a dialog informing the user that the file could not be opened
        Parameters:
        frame - a JFrame to act as parent to this dialog
        message - a String giving the specific reason the file could not be opened
      • displayablePath

        public static java.lang.String displayablePath​(java.lang.String path)
        Returns a String that is suitable for using in GUI elements for displaying (long) paths to users.
        Parameters:
        path - a path that should be shortened
        Returns:
        a shortened path suitable for displaying to the user
      • displayablePath

        public static java.lang.String displayablePath​(java.lang.String path,
                                                       int visibleChars)
        Return a String that is suitable for using in GUI elements for displaying paths to users. If the path is longer than visibleChars, it is truncated in a display-friendly way
        Parameters:
        path - a path that should be shorted
        visibleChars - the maximum number of characters that path should fit into. Also the length of the returned string
        Returns:
        a shortened path that contains limited number of chars
      • recursiveDelete

        public static void recursiveDelete​(java.io.File file,
                                           java.io.File base)
                                    throws java.io.IOException
        Recursively delete everything under a directory. Works on either files or directories
        Parameters:
        file - the file object representing what to delete. Can be either a file or a directory.
        base - the directory under which the file and its subdirectories must be located
        Throws:
        java.io.IOException - on an io exception or if trying to delete something outside the base
      • getFileLock

        public static java.nio.channels.FileLock getFileLock​(java.lang.String path,
                                                             boolean shared,
                                                             boolean allowBlock)
                                                      throws java.io.FileNotFoundException
        This will return a lock to the file specified.
        Parameters:
        path - File path to file we want to lock.
        shared - Specify if the lock will be a shared lock.
        allowBlock - Specify if we should block when we can not get the lock. Getting a shared lock will always block.
        Returns:
        FileLock if we were successful in getting a lock, otherwise null.
        Throws:
        java.io.FileNotFoundException - If the file does not exist.
      • saveFile

        public static void saveFile​(java.lang.String content,
                                    java.io.File f)
                             throws java.io.IOException
        Method to save String as file in UTF-8 encoding.
        Parameters:
        content - which will be saved as it is saved in this String
        f - file to be saved. No warnings provided
        Throws:
        java.io.IOException - if save fails
      • saveFile

        public static void saveFile​(java.lang.String content,
                                    java.io.File f,
                                    java.lang.String encoding)
                             throws java.io.IOException
        Method to save String as file in specified encoding/.
        Parameters:
        content - which will be saved as it is saved in this String
        f - file to be saved. No warnings provided
        encoding - of output byte representation
        Throws:
        java.io.IOException - if save fails
      • getContentOfStream

        public static java.lang.String getContentOfStream​(java.io.InputStream is,
                                                          java.lang.String encoding)
                                                   throws java.io.IOException
        utility method which can read from any stream as one long String
        Parameters:
        is - stream
        encoding - the encoding to use to convert the bytes from the stream
        Returns:
        stream as string
        Throws:
        java.io.IOException - if connection can't be established or resource does not exist
      • getContentOfReader

        public static java.lang.String getContentOfReader​(java.io.Reader r)
                                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • getContentOfStream

        public static java.lang.String getContentOfStream​(java.io.InputStream is)
                                                   throws java.io.IOException
        utility method which can read from any stream as one long String
        Parameters:
        is - stream
        Returns:
        stream as string
        Throws:
        java.io.IOException - if connection can't be established or resource does not exist
      • loadFileAsString

        public static java.lang.String loadFileAsString​(java.io.File f)
                                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • loadFileAsString

        public static java.lang.String loadFileAsString​(java.io.File f,
                                                        java.lang.String encoding)
                                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • getFileMD5Sum

        public static byte[] getFileMD5Sum​(java.io.File file,
                                           java.lang.String algorithm)
                                    throws java.security.NoSuchAlgorithmException,
                                           java.io.FileNotFoundException,
                                           java.io.IOException
        Throws:
        java.security.NoSuchAlgorithmException
        java.io.FileNotFoundException
        java.io.IOException