Package net.sourceforge.jnlp.util
Class FileUtils
- java.lang.Object
-
- net.sourceforge.jnlp.util.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 Stringstatic java.lang.String
getContentOfStream(java.io.InputStream is, java.lang.String encoding)
utility method which can read from any stream as one long Stringstatic 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 namestatic 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 openedstatic 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 reasonstatic void
showCouldNotOpenFilepathDialog(java.awt.Component frame, java.lang.String filePath)
Show a generic error dialog indicating the file could not be openedstatic void
showReadOnlyDialog(java.awt.Component frame)
Show a dialog informing the user that the file is currently read-onlystatic 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 directorystatic FileUtils.OpenFileResult
testFilePermissions(java.io.File file)
Verify that a given file object points to a real, accessible plain file.
-
-
-
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 filewritableByOwner
- 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 directoryeMsg
- - 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 deletedeMsg
- 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
- theFile
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
- theFile
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
- aJFrame
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
- aJFrame
to act as parent to this dialogfilePath
- aString
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
- aJFrame
to act as parent to this dialogfilePath
- aString
representing the path to the file we failed to openreason
- aFileUtils.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
- aJFrame
to act as parent to this dialogmessage
- aString
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 shortedvisibleChars
- 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 Stringf
- 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 Stringf
- file to be saved. No warnings providedencoding
- 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
- streamencoding
- 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
-
-