Class FileUtils
java.lang.Object
nonapi.io.github.classgraph.utils.FileUtils
File utilities.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static Method
The attachment() method.private static Method
The Cleaner.clean() method.private static String
The current directory path (only reads the current directory once, the first time this field is accessed, so will not reflect subsequent changes to the current directory).private static Method
The DirectByteBuffer.cleaner() method.private static AtomicBoolean
True if class' static fields have been initialized.static final int
The maximum size of a file buffer array.private static Object
The Unsafe object. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic boolean
Check if aFile
exists and can be read.static boolean
Check if aPath
exists and can be read.static boolean
canReadAndIsDir
(File file) Check if aFile
exists, is a directory, and can be read.static boolean
canReadAndIsDir
(Path path) Check if aPath
exists, is a directory, and can be read.static boolean
canReadAndIsFile
(File file) Check if aFile
exists, is a regular file, and can be read.static boolean
canReadAndIsFile
(Path path) Check if aPath
exists, is a regular file, and can be read.static void
checkCanReadAndIsDir
(File file) Check if aFile
exists, is a directory, and can be read.static void
checkCanReadAndIsFile
(File file) Check if aFile
exists, is a regular file, and can be read.static void
checkCanReadAndIsFile
(Path path) Check if aPath
exists, is a regular file, and can be read.static boolean
closeDirectByteBuffer
(ByteBuffer byteBuffer, ReflectionUtils reflectionUtils, LogNode log) Close aDirectByteBuffer
-- in particular, will unmap aMappedByteBuffer
.private static boolean
closeDirectByteBufferPrivileged
(ByteBuffer byteBuffer, LogNode log) Close a direct byte buffer (run in doPrivileged).static String
Get the current directory (only looks at the current directory the first time it is called, then caches this value for future reads).static String
getParentDirPath
(String path) Get the parent dir path.static String
getParentDirPath
(String path, char separator) Get the parent dir path.static boolean
isClassfile
(String path) Check if the path ends with a ".class" extension, ignoring case.private static void
Get the clean() method, attachment() method, and theUnsafe field, called inside doPrivileged.static String
sanitizeEntryPath
(String path, boolean removeInitialSlash, boolean removeFinalSlash) Sanitize relative paths against "zip slip" vulnerability, by removing path segments if ".." is found in the URL, but without allowing navigation above the path hierarchy root.
-
Field Details
-
directByteBufferCleanerMethod
The DirectByteBuffer.cleaner() method. -
cleanerCleanMethod
The Cleaner.clean() method. -
attachmentMethod
The attachment() method. -
theUnsafe
The Unsafe object. -
initialized
True if class' static fields have been initialized. -
currDirPath
The current directory path (only reads the current directory once, the first time this field is accessed, so will not reflect subsequent changes to the current directory). -
MAX_BUFFER_SIZE
public static final int MAX_BUFFER_SIZEThe maximum size of a file buffer array. Eight bytes smaller thanInteger.MAX_VALUE
, since some VMs reserve header words in arrays.- See Also:
-
-
Constructor Details
-
FileUtils
private FileUtils()Constructor.
-
-
Method Details
-
currDirPath
Get the current directory (only looks at the current directory the first time it is called, then caches this value for future reads).- Returns:
- The current directory, as a string
-
sanitizeEntryPath
public static String sanitizeEntryPath(String path, boolean removeInitialSlash, boolean removeFinalSlash) Sanitize relative paths against "zip slip" vulnerability, by removing path segments if ".." is found in the URL, but without allowing navigation above the path hierarchy root. Treats each "!" character as a new path hierarchy root. Also removes "." and empty path segments ("//").- Parameters:
path
- The path to sanitize.removeInitialSlash
- If true, remove any '/' character(s) from the beginning of the returned path.removeFinalSlash
- If true, remove any '/' character(s) from the end of the returned path.- Returns:
- The sanitized path.
-
isClassfile
Check if the path ends with a ".class" extension, ignoring case.- Parameters:
path
- A file path.- Returns:
- true if path has a ".class" extension, ignoring case.
-
canRead
Check if aFile
exists and can be read.- Parameters:
file
- AFile
.- Returns:
- true if a file exists and can be read.
-
canRead
Check if aPath
exists and can be read.- Parameters:
path
- APath
.- Returns:
- true if the file exists and can be read.
-
canReadAndIsFile
Check if aFile
exists, is a regular file, and can be read.- Parameters:
file
- AFile
.- Returns:
- true if the file exists, is a regular file, and can be read.
-
canReadAndIsFile
Check if aPath
exists, is a regular file, and can be read.- Parameters:
path
- APath
.- Returns:
- true if the file exists, is a regular file, and can be read.
-
checkCanReadAndIsFile
Check if aFile
exists, is a regular file, and can be read.- Parameters:
file
- AFile
.- Throws:
IOException
- if the file does not exist, is not a regular file, or cannot be read.
-
checkCanReadAndIsFile
Check if aPath
exists, is a regular file, and can be read.- Parameters:
path
- APath
.- Throws:
IOException
- if the path does not exist, is not a regular file, or cannot be read.
-
canReadAndIsDir
Check if aFile
exists, is a directory, and can be read.- Parameters:
file
- AFile
.- Returns:
- true if the file exists, is a directory, and can be read.
-
canReadAndIsDir
Check if aPath
exists, is a directory, and can be read.- Parameters:
path
- APath
.- Returns:
- true if the file exists, is a directory, and can be read.
-
checkCanReadAndIsDir
Check if aFile
exists, is a directory, and can be read.- Parameters:
file
- AFile
.- Throws:
IOException
- if the file does not exist, is not a directory, or cannot be read.
-
getParentDirPath
Get the parent dir path.- Parameters:
path
- the pathseparator
- the separator- Returns:
- the parent dir path
-
getParentDirPath
Get the parent dir path.- Parameters:
path
- the path- Returns:
- the parent dir path
-
lookupCleanMethodPrivileged
private static void lookupCleanMethodPrivileged()Get the clean() method, attachment() method, and theUnsafe field, called inside doPrivileged. -
closeDirectByteBufferPrivileged
Close a direct byte buffer (run in doPrivileged).- Parameters:
byteBuffer
- the byte bufferlog
- the log- Returns:
- true if successful
-
closeDirectByteBuffer
public static boolean closeDirectByteBuffer(ByteBuffer byteBuffer, ReflectionUtils reflectionUtils, LogNode log) Close aDirectByteBuffer
-- in particular, will unmap aMappedByteBuffer
.- Parameters:
byteBuffer
- TheByteBuffer
to close/unmap.log
- The log.- Returns:
- True if the byteBuffer was closed/unmapped.
-