Package org.apache.sshd.common.util.io
Class IoUtils
java.lang.Object
org.apache.sshd.common.util.io.IoUtils
TODO Add javadoc
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final intSize of preferred work buffer when reading / writing data to / from streamsstatic final Stringstatic final CopyOption[]static final FileAttribute<?>[]static final LinkOption[]static final OpenOption[]static final StringThe local O/S line separatorprivate static final byte[]static final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringprivate static final LinkOption[]static final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Set<StandardOpenOption> ASetofStandardOpenOption-s that indicate an intent to create/modify a file -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic StringappendPathComponent(String prefix, String component) static PathbuildPath(Path root, FileSystem fs, List<String> namesList) Build a path from the list of path partsstatic PathbuildRelativePath(FileSystem fs, List<String> namesList) Build a relative path on the filesystem fs from the path parts in the namesListstatic BooleancheckFileExists(Path path, LinkOption... options) Checks if a file exists - Note: according to the Java tutorial - Checking a File or Directory:static BooleancheckFileExistsAnySymlinks(Path path, boolean neverFollowSymlinks) Checks that a file exists with or without following any symlinks.static PathChroot a path under the new rootstatic IOExceptionCloses the specifiedCloseableresourcestatic IOExceptioncloseQuietly(Closeable... closeables) Closes a bunch of resources suppressing anyIOExceptions theirCloseable.close()method may have thrownstatic IOExceptioncloseQuietly(Collection<? extends Closeable> closeables) Closes a bunch of resources suppressing anyIOExceptions theirCloseable.close()method may have thrownstatic longcopy(InputStream source, OutputStream sink) static longcopy(InputStream source, OutputStream sink, int bufferSize) static PathensureDirectory(Path path, LinkOption... options) static booleanfollowLinks(LinkOption... options) static byte[]static StringgetFileOwner(Path path, LinkOption... options) Get file owner.static PathgetFirstPartsOfPath(Path path, int partsToExtract) Extracts the first n parts of the path.static LinkOption[]getLinkOptions(boolean followLinks) static Set<PosixFilePermission> getPermissions(Path path, LinkOption... options) If the "posix" view is supported, then it returnsFiles.getPosixFilePermissions(Path, LinkOption...), otherwise uses thegetPermissionsFromFile(File)methodstatic Set<PosixFilePermission> static booleanisExecutable(File f) static booleanisWindowsExecutable(String fileName) static intread(InputStream input, byte[] buffer) Read as many bytes as possible until EOF or achieved required lengthstatic intread(InputStream input, byte[] buffer, int offset, int length) Read as many bytes as possible until EOF or achieved required lengthreadAllLines(BufferedReader reader) Reads all lines until no more availablereadAllLines(BufferedReader reader, int lineCountHint) Reads all lines until no more availablereadAllLines(InputStream stream) Reads all lines until no more availablereadAllLines(Reader reader) readAllLines(URL url) Reads all lines until no more availablestatic voidreadFully(InputStream input, byte[] buffer) Read the requested number of bytes or fail if there are not enough left.static voidreadFully(InputStream input, byte[] buffer, int offset, int length) Read the requested number of bytes or fail if there are not enough left.static PathremoveCdUpAboveRoot(Path toSanitize) Remove any extra directory ups from the PathremoveExtraCdUps(Path toResolve) static voidsetPermissions(Path path, Set<PosixFilePermission> perms) If the "posix" view is supported, then it invokesFiles.setPosixFilePermissions(Path, Set), otherwise uses thesetPermissionsToFile(File, Collection)methodstatic voidsetPermissionsToFile(File f, Collection<PosixFilePermission> perms) static byte[]toByteArray(InputStream inStream) static PosixFilePermissionvalidateExcludedPermissions(Collection<PosixFilePermission> perms, Collection<PosixFilePermission> excluded)
-
Field Details
-
EMPTY_OPEN_OPTIONS
-
EMPTY_COPY_OPTIONS
-
EMPTY_LINK_OPTIONS
-
EMPTY_FILE_ATTRIBUTES
-
WINDOWS_EXECUTABLE_EXTENSIONS
-
REGFILE_VIEW_ATTR
- See Also:
-
DIRECTORY_VIEW_ATTR
- See Also:
-
SYMLINK_VIEW_ATTR
- See Also:
-
NUMLINKS_VIEW_ATTR
- See Also:
-
OTHERFILE_VIEW_ATTR
- See Also:
-
EXECUTABLE_VIEW_ATTR
- See Also:
-
SIZE_VIEW_ATTR
- See Also:
-
OWNER_VIEW_ATTR
- See Also:
-
GROUP_VIEW_ATTR
- See Also:
-
USERID_VIEW_ATTR
- See Also:
-
GROUPID_VIEW_ATTR
- See Also:
-
PERMISSIONS_VIEW_ATTR
- See Also:
-
ACL_VIEW_ATTR
- See Also:
-
FILEKEY_VIEW_ATTR
- See Also:
-
CREATE_TIME_VIEW_ATTR
- See Also:
-
LASTMOD_TIME_VIEW_ATTR
- See Also:
-
LASTACC_TIME_VIEW_ATTR
- See Also:
-
EXTENDED_VIEW_ATTR
- See Also:
-
DEFAULT_COPY_SIZE
public static final int DEFAULT_COPY_SIZESize of preferred work buffer when reading / writing data to / from streams- See Also:
-
EOL
The local O/S line separator -
WRITEABLE_OPEN_OPTIONS
ASetofStandardOpenOption-s that indicate an intent to create/modify a file -
EOL_BYTES
private static final byte[] EOL_BYTES -
NO_FOLLOW_OPTIONS
-
-
Constructor Details
-
IoUtils
private IoUtils()Private Constructor
-
-
Method Details
-
getEOLBytes
public static byte[] getEOLBytes()- Returns:
- The local platform line separator bytes as UTF-8. Note: each call returns a new instance in order to avoid inadvertent changes in shared objects
- See Also:
-
getLinkOptions
-
copy
- Throws:
IOException
-
copy
- Throws:
IOException
-
closeQuietly
Closes a bunch of resources suppressing anyIOExceptions theirCloseable.close()method may have thrown- Parameters:
closeables- TheCloseables to close- Returns:
- The first
IOExceptionthat occurred during closing of a resource -nullif not exception. If more than one exception occurred, they are added as suppressed exceptions to the first one - See Also:
-
closeQuietly
Closes the specifiedCloseableresource- Parameters:
c- The resource to close - ignored ifnull- Returns:
- The thrown
IOExceptionwhenclose()was called -nullif no exception was thrown (or no resource to close to begin with)
-
closeQuietly
Closes a bunch of resources suppressing anyIOExceptions theirCloseable.close()method may have thrown- Parameters:
closeables- TheCloseables to close- Returns:
- The first
IOExceptionthat occurred during closing of a resource -nullif not exception. If more than one exception occurred, they are added as suppressed exceptions to the first one - See Also:
-
isWindowsExecutable
- Parameters:
fileName- The file name to be evaluated - ignored ifnull/empty- Returns:
trueif the file ends in one of theWINDOWS_EXECUTABLE_EXTENSIONS
-
getPermissions
public static Set<PosixFilePermission> getPermissions(Path path, LinkOption... options) throws IOException If the "posix" view is supported, then it returnsFiles.getPosixFilePermissions(Path, LinkOption...), otherwise uses thegetPermissionsFromFile(File)method- Parameters:
path- ThePathoptions- TheLinkOptions to use when querying the permissions- Returns:
- A
SetofPosixFilePermission - Throws:
IOException- If failed to access the file system in order to retrieve the permissions
-
getPermissionsFromFile
- Parameters:
f- TheFileto be checked- Returns:
- A
SetofPosixFilePermissions based on whether the file is readable/writable/executable. If so, then all the relevant permissions are set (i.e., owner, group and others)
-
isExecutable
-
setPermissions
If the "posix" view is supported, then it invokesFiles.setPosixFilePermissions(Path, Set), otherwise uses thesetPermissionsToFile(File, Collection)method- Parameters:
path- ThePathperms- TheSetofPosixFilePermissions- Throws:
IOException- If failed to access the file system
-
setPermissionsToFile
- Parameters:
f- TheFileperms- ACollectionofPosixFilePermissions to set on it. Note: the file is set to readable/writable/executable not only by the owner if any of relevant the owner/group/others permission is set
-
getFileOwner
Get file owner.
- Parameters:
path- ThePathoptions- TheLinkOptions to use when querying the owner- Returns:
- Owner of the file or null if unsupported. Note: for Windows it strips any prepended domain or group name
- Throws:
IOException- If failed to access the file system- See Also:
-
checkFileExists
Checks if a file exists - Note: according to the Java tutorial - Checking a File or Directory:
The methods in the Path class are syntactic, meaning that they operate on the Path instance. But eventually you must access the file system to verify that a particular Path exists, or does not exist. You can do so with the exists(Path, LinkOption...) and the notExists(Path, LinkOption...) methods. Note that !Files.exists(path) is not equivalent to Files.notExists(path). When you are testing a file's existence, three results are possible: - The file is verified to exist. - The file is verified to not exist. - The file's status is unknown. This result can occur when the program does not have access to the file. If both exists and notExists return false, the existence of the file cannot be verified.
- Parameters:
path- ThePathto be testedoptions- TheLinkOptions to use- Returns:
Boolean.TRUE/Boolean.FALSEornullaccording to the file status as explained above
-
checkFileExistsAnySymlinks
Checks that a file exists with or without following any symlinks.- Parameters:
path- the path to checkneverFollowSymlinks- whether to follow symlinks- Returns:
- true if the file exists with the symlink semantics, false if it doesn't exist, null if symlinks were found, or it is unknown if whether the file exists
-
getFirstPartsOfPath
Extracts the first n parts of the path. For example
("/home/test/test12", 1) returns "/home",
("/home/test", 1) returns "/home/test"
etc.- Parameters:
path- the path to extract parts ofpartsToExtract- the number of parts to extract- Returns:
- the extracted path
-
readFully
Read the requested number of bytes or fail if there are not enough left.- Parameters:
input- where to read input frombuffer- destination- Throws:
IOException- if there is a problem reading the fileEOFException- if the number of bytes read was incorrect
-
readFully
public static void readFully(InputStream input, byte[] buffer, int offset, int length) throws IOException Read the requested number of bytes or fail if there are not enough left.- Parameters:
input- where to read input frombuffer- destinationoffset- initial offset into bufferlength- length to read, must be ≥ 0- Throws:
IOException- if there is a problem reading the fileEOFException- if the number of bytes read was incorrect
-
read
Read as many bytes as possible until EOF or achieved required length- Parameters:
input- where to read input frombuffer- destination- Returns:
- actual length read; may be less than requested if EOF was reached
- Throws:
IOException- if a read error occurs
-
read
Read as many bytes as possible until EOF or achieved required length- Parameters:
input- where to read input frombuffer- destinationoffset- initial offset into bufferlength- length to read - ignored if non-positive- Returns:
- actual length read; may be less than requested if EOF was reached
- Throws:
IOException- if a read error occurs
-
validateExcludedPermissions
public static PosixFilePermission validateExcludedPermissions(Collection<PosixFilePermission> perms, Collection<PosixFilePermission> excluded) - Parameters:
perms- The currentPosixFilePermissions - ignored ifnull/emptyexcluded- The permissions not allowed to exist - ignored ifnull/empty- Returns:
- The violating
PosixFilePermission-nullif no violating permission found
-
ensureDirectory
- Parameters:
path- ThePathto checkoptions- TheLinkOptions to use when checking if path is a directory- Returns:
- The same input path if it is a directory
- Throws:
UnsupportedOperationException- if input path not a directory
-
followLinks
- Parameters:
options- TheLinkOptions - OK ifnull/empty- Returns:
trueif the link options arenull/empty or do not containLinkOption.NOFOLLOW_LINKS,falseotherwise (i.e., the array is not empty and contains the special value)
-
appendPathComponent
-
toByteArray
- Throws:
IOException
-
readAllLines
Reads all lines until no more available- Parameters:
url- TheURLto read from- Returns:
- The
Listof lines in the same order as it was read - Throws:
IOException- If failed to read the lines- See Also:
-
readAllLines
Reads all lines until no more available- Parameters:
stream- TheInputStream- Note: assumed to containUTF-8encoded data- Returns:
- The
Listof lines in the same order as it was read - Throws:
IOException- If failed to read the lines- See Also:
-
readAllLines
- Throws:
IOException
-
readAllLines
Reads all lines until no more available- Parameters:
reader- TheBufferedReaderto read all lines- Returns:
- The
Listof lines in the same order as it was read - Throws:
IOException- If failed to read the lines- See Also:
-
readAllLines
public static List<String> readAllLines(BufferedReader reader, int lineCountHint) throws IOException Reads all lines until no more available- Parameters:
reader- TheBufferedReaderto read all lineslineCountHint- A hint as to the expected number of lines - non-positive means unknown - in which case some initial default value will be used to initialize the list used to accumulate the lines.- Returns:
- The
Listof lines in the same order as it was read - Throws:
IOException- If failed to read the lines
-
chroot
Chroot a path under the new root- Parameters:
newRoot- the new roottoSanitize- the path to sanitize and chroot- Returns:
- the chrooted path under the newRoot filesystem
-
removeCdUpAboveRoot
Remove any extra directory ups from the Path- Parameters:
toSanitize- the path to sanitize- Returns:
- the sanitized path
-
removeExtraCdUps
-
buildPath
Build a path from the list of path parts- Parameters:
root- the root pathfs- the filesystemnamesList- the parts of the path to build- Returns:
- the built path
-
buildRelativePath
Build a relative path on the filesystem fs from the path parts in the namesList- Parameters:
fs- the filesystem for the pathnamesList- the names list- Returns:
- the built path
-