public class FileUtils extends Object
Modifier and Type | Field and Description |
---|---|
static int |
EMPTY_DIRECTORIES_ONLY
Option to only delete empty directories.
|
static int |
IGNORE_ERRORS
Option not to throw exceptions when a deletion finally doesn't succeed.
|
static int |
NONE
Option to delete given
File |
static int |
RECURSIVE
Option to recursively delete given
File |
static int |
RETRY
Option to retry deletion if not successful
|
static int |
SKIP_MISSING
Option to skip deletion if file doesn't exist
|
Constructor and Description |
---|
FileUtils() |
Modifier and Type | Method and Description |
---|---|
static boolean |
canExecute(File file)
Whether the given file can be executed.
|
static File |
canonicalize(File file)
Best-effort variation of
File.getCanonicalFile()
returning the input file if the file cannot be canonicalized instead of
throwing IOException . |
static void |
createNewFile(File f)
Atomically creates a new, empty file named by this abstract pathname if
and only if a file with this name does not yet exist.
|
static Path |
createSymLink(File path,
String target)
Create a symbolic link
|
static File |
createTempDir(String prefix,
String suffix,
File dir)
Create a temporary directory.
|
static long |
delay(long last,
long min,
long max)
Compute a delay in a
min..max interval with random jitter. |
static void |
delete(File f)
Delete file or empty folder
|
static void |
delete(File f,
int options)
Delete file or folder
|
static FS.Attributes |
getFileAttributesPosix(FS fs,
File file)
Get file system attributes for the given file.
|
static long |
getLength(File file)
Get file length
|
static boolean |
isStaleFileHandle(IOException ioe)
Determine if an IOException is a Stale NFS File Handle
|
static boolean |
isStaleFileHandleInCausalChain(Throwable throwable)
Determine if a throwable or a cause in its causal chain is a Stale NFS
File Handle
|
static void |
mkdir(File d)
Creates the directory named by this abstract pathname.
|
static void |
mkdir(File d,
boolean skipExisting)
Creates the directory named by this abstract pathname.
|
static void |
mkdirs(File d)
Creates the directory named by this abstract pathname, including any
necessary but nonexistent parent directories.
|
static void |
mkdirs(File d,
boolean skipExisting)
Creates the directory named by this abstract pathname, including any
necessary but nonexistent parent directories.
|
static File |
normalize(File file)
NFC normalize a file (on Mac), otherwise do nothing
|
static String |
normalize(String name)
On Mac: get NFC normalized form of given name, otherwise the given name.
|
static String |
pathToString(File file)
Convert a path to String, replacing separators as necessary.
|
static String |
readSymLink(File path)
Read target path of the symlink.
|
static String |
relativizeGitPath(String base,
String other)
Expresses
other as a relative file path from
base . |
static String |
relativizeNativePath(String base,
String other)
Expresses
other as a relative file path from
base . |
static String |
relativizePath(String base,
String other,
String dirSeparator,
boolean caseSensitive)
Expresses
other as a relative file path from base |
static void |
rename(File src,
File dst)
Rename a file or folder.
|
static void |
rename(File src,
File dst,
CopyOption... options)
Rename a file or folder using the passed
CopyOption s. |
static void |
setHidden(File file,
boolean hidden)
Set a file hidden (on Windows)
|
static Path |
toPath(File f)
|
static void |
touch(Path f)
Touch the given file
|
public static final int NONE
File
public static final int RECURSIVE
File
public static final int RETRY
public static final int SKIP_MISSING
public static final int IGNORE_ERRORS
public static final int EMPTY_DIRECTORIES_ONLY
RECURSIVE
public static Path toPath(File f) throws IOException
f
- File
to be converted to Path
IOException
- in case the path represented by the file is not valid (
InvalidPathException
)public static void delete(File f) throws IOException
f
- File
to be deletedIOException
- if deletion of f
fails. This may occur if f
didn't exist when the method was called. This can therefore
cause java.io.IOExceptions during race conditions when
multiple concurrent threads all try to delete the same file.public static void delete(File f, int options) throws IOException
f
- File
to be deletedoptions
- deletion options, RECURSIVE
for recursive deletion of
a subtree, RETRY
to retry when deletion failed.
Retrying may help if the underlying file system doesn't allow
deletion of files being read by another thread.IOException
- if deletion of f
fails. This may occur if f
didn't exist when the method was called. This can therefore
cause java.io.IOExceptions during race conditions when
multiple concurrent threads all try to delete the same file.
This exception is not thrown when IGNORE_ERRORS is set.public static void rename(File src, File dst) throws IOException
This operation is not atomic.
src
- the old File
dst
- the new File
IOException
- if the rename has failedFS.retryFailedLockFileCommit()
public static void rename(File src, File dst, CopyOption... options) throws AtomicMoveNotSupportedException, IOException
CopyOption
s. If the rename fails and if we are
running on a filesystem where it makes sense to repeat a failing rename
then repeat the rename operation up to 9 times with 100ms sleep time
between two calls. Furthermore if the destination exists and is a
directory hierarchy with only directories in it, the whole directory
hierarchy will be deleted. If the target represents a non-empty directory
structure, empty subdirectories within that structure may or may not be
deleted even if the method fails. Furthermore if the destination exists
and is a file then the file will be replaced if
StandardCopyOption.REPLACE_EXISTING
has been set.
If StandardCopyOption.ATOMIC_MOVE
has been set the
rename will be done atomically or fail with an
AtomicMoveNotSupportedException
src
- the old filedst
- the new fileoptions
- options to pass to
Files.move(java.nio.file.Path, java.nio.file.Path, CopyOption...)
AtomicMoveNotSupportedException
- if file cannot be moved as an atomic file system operationIOException
public static void mkdir(File d) throws IOException
d
- directory to be createdIOException
- if creation of d
fails. This may occur if d
did exist when the method was called. This can therefore
cause java.io.IOExceptions during race conditions when
multiple concurrent threads all try to create the same
directory.public static void mkdir(File d, boolean skipExisting) throws IOException
d
- directory to be createdskipExisting
- if true
skip creation of the given directory if it
already exists in the file systemIOException
- if creation of d
fails. This may occur if d
did exist when the method was called. This can therefore
cause java.io.IOExceptions during race conditions when
multiple concurrent threads all try to create the same
directory.public static void mkdirs(File d) throws IOException
d
- directory to be createdIOException
- if creation of d
fails. This may occur if d
did exist when the method was called. This can therefore
cause java.io.IOExceptions during race conditions when
multiple concurrent threads all try to create the same
directory.public static void mkdirs(File d, boolean skipExisting) throws IOException
d
- directory to be createdskipExisting
- if true
skip creation of the given directory if it
already exists in the file systemIOException
- if creation of d
fails. This may occur if d
did exist when the method was called. This can therefore
cause java.io.IOExceptions during race conditions when
multiple concurrent threads all try to create the same
directory.public static void createNewFile(File f) throws IOException
Note: this method should not be used for file-locking, as the resulting
protocol cannot be made to work reliably. The
FileLock
facility should be used instead.
f
- the file to be createdIOException
- if the named file already exists or if an I/O error occurredpublic static Path createSymLink(File path, String target) throws IOException
path
- the path of the symbolic link to createtarget
- the target of the symbolic linkIOException
public static String readSymLink(File path) throws IOException
path
- a File
object.IOException
public static File createTempDir(String prefix, String suffix, File dir) throws IOException
prefix
- prefix stringsuffix
- suffix stringdir
- The parent dir, can be null to use system default temp dir.IOException
public static String relativizeNativePath(String base, String other)
other
as a relative file path from
base
. File-separator and case sensitivity are based on the
current file system.
See also
relativizePath(String, String, String, boolean)
.base
- Base pathother
- Destination pathbase
to other
public static String relativizeGitPath(String base, String other)
other
as a relative file path from
base
. File-separator and case sensitivity are based on Git's
internal representation of files (which matches Unix).
See also
relativizePath(String, String, String, boolean)
.base
- Base pathother
- Destination pathbase
to other
public static String relativizePath(String base, String other, String dirSeparator, boolean caseSensitive)
other
as a relative file path from base
For example, if called with the two following paths :
This will return "..\\another_project\\pom.xml".base = "c:\\Users\\jdoe\\eclipse\\git\\project"
other = "c:\\Users\\jdoe\\eclipse\\git\\another_project\\pom.xml"
Note that this will return the empty String if base
and other
are equal.
base
- The path against which other
should be
relativized. This will be assumed to denote the path to a
folder and not a file.other
- The path that will be made relative to base
.dirSeparator
- A string that separates components of the path. In practice, this is "/" or "\\".caseSensitive
- Whether to consider differently-cased directory names as distinctbase
,
will yield the original other
.public static boolean isStaleFileHandle(IOException ioe)
ioe
- an IOException
object.public static boolean isStaleFileHandleInCausalChain(Throwable throwable)
throwable
- a Throwable
object.public static void setHidden(File file, boolean hidden) throws IOException
file
- a File
object.hidden
- a boolean.IOException
public static long getLength(File file) throws IOException
file
- a File
.IOException
public static boolean canExecute(File file)
file
- a File
object.true
if the given file can be executed.public static FS.Attributes getFileAttributesPosix(FS fs, File file)
public static File normalize(File file)
public static String normalize(String name)
name
- a String
object.public static File canonicalize(File file)
File.getCanonicalFile()
returning the input file if the file cannot be canonicalized instead of
throwing IOException
.file
- to be canonicalized; may be null
file == null
SecurityException
- if File.getCanonicalFile()
throws onepublic static String pathToString(File file)
file
- a File
.public static void touch(Path f) throws IOException
f
- the file to touchIOException
public static long delay(long last, long min, long max)
min..max
interval with random jitter.last
- amount of delay waited before the last attempt. This is used
to seed the next delay interval. Should be 0 if there was no
prior delay.min
- shortest amount of allowable delay between attempts.max
- longest amount of allowable delay between attempts.Copyright © 2020 Eclipse JGit Project. All rights reserved.