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 int
Size of preferred work buffer when reading / writing data to / from streamsstatic final CopyOption[]
static final FileAttribute<?>[]
static final LinkOption[]
static final OpenOption[]
static final String
The local O/S line separatorprivate static final byte[]
private static final LinkOption[]
static final Set<StandardOpenOption>
ASet
ofStandardOpenOption
-s that indicate an intent to create/modify a file -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic String
appendPathComponent
(String prefix, String component) static Boolean
checkFileExists
(Path path, LinkOption... options) Checks if a file exists - Note: according to the Java tutorial - Checking a File or Directory:static IOException
Closes the specifiedCloseable
resourcestatic IOException
closeQuietly
(Closeable... closeables) Closes a bunch of resources suppressing anyIOException
s theirCloseable.close()
method may have thrownstatic IOException
closeQuietly
(Collection<? extends Closeable> closeables) Closes a bunch of resources suppressing anyIOException
s theirCloseable.close()
method may have thrownstatic long
copy
(InputStream source, OutputStream sink) static long
copy
(InputStream source, OutputStream sink, int bufferSize) static Path
ensureDirectory
(Path path, LinkOption... options) static boolean
followLinks
(LinkOption... options) static byte[]
static String
getFileOwner
(Path path, LinkOption... options) Get file owner.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 boolean
isExecutable
(File f) static boolean
isWindowsExecutable
(String fileName) static int
read
(InputStream input, byte[] buffer) Read as many bytes as possible until EOF or achieved required lengthstatic int
read
(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 void
readFully
(InputStream input, byte[] buffer) Read the requested number of bytes or fail if there are not enough left.static void
readFully
(InputStream input, byte[] buffer, int offset, int length) Read the requested number of bytes or fail if there are not enough left.static void
setPermissions
(Path path, Set<PosixFilePermission> perms) If the "posix" view is supported, then it invokesFiles.setPosixFilePermissions(Path, Set)
, otherwise uses thesetPermissionsToFile(File, Collection)
methodstatic void
setPermissionsToFile
(File f, Collection<PosixFilePermission> perms) static byte[]
toByteArray
(InputStream inStream) static PosixFilePermission
validateExcludedPermissions
(Collection<PosixFilePermission> perms, Collection<PosixFilePermission> excluded)
-
Field Details
-
EMPTY_OPEN_OPTIONS
-
EMPTY_COPY_OPTIONS
-
EMPTY_LINK_OPTIONS
-
EMPTY_FILE_ATTRIBUTES
-
WINDOWS_EXECUTABLE_EXTENSIONS
-
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
ASet
ofStandardOpenOption
-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 anyIOException
s theirCloseable.close()
method may have thrown- Parameters:
closeables
- TheCloseable
s to close- Returns:
- The first
IOException
that occurred during closing of a resource -null
if not exception. If more than one exception occurred, they are added as suppressed exceptions to the first one - See Also:
-
closeQuietly
Closes the specifiedCloseable
resource- Parameters:
c
- The resource to close - ignored ifnull
- Returns:
- The thrown
IOException
whenclose()
was called -null
if no exception was thrown (or no resource to close to begin with)
-
closeQuietly
Closes a bunch of resources suppressing anyIOException
s theirCloseable.close()
method may have thrown- Parameters:
closeables
- TheCloseable
s to close- Returns:
- The first
IOException
that occurred during closing of a resource -null
if 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:
true
if 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
- ThePath
options
- TheLinkOption
s to use when querying the permissions- Returns:
- A
Set
ofPosixFilePermission
- Throws:
IOException
- If failed to access the file system in order to retrieve the permissions
-
getPermissionsFromFile
- Parameters:
f
- TheFile
to be checked- Returns:
- A
Set
ofPosixFilePermission
s 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
- ThePath
perms
- TheSet
ofPosixFilePermission
s- Throws:
IOException
- If failed to access the file system
-
setPermissionsToFile
- Parameters:
f
- TheFile
perms
- ACollection
ofPosixFilePermission
s 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
- ThePath
options
- TheLinkOption
s 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
- ThePath
to be testedoptions
- TheLinkOption
s to use- Returns:
Boolean.TRUE
/Boolean.FALSE
ornull
according to the file status as explained above
-
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 currentPosixFilePermission
s - ignored ifnull
/emptyexcluded
- The permissions not allowed to exist - ignored ifnull
/empty- Returns:
- The violating
PosixFilePermission
-null
if no violating permission found
-
ensureDirectory
- Parameters:
path
- ThePath
to checkoptions
- TheLinkOption
s 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
- TheLinkOption
s - OK ifnull
/empty- Returns:
true
if the link options arenull
/empty or do not containLinkOption.NOFOLLOW_LINKS
,false
otherwise (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
- TheURL
to read from- Returns:
- The
List
of 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-8
encoded data- Returns:
- The
List
of 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
- TheBufferedReader
to read all lines- Returns:
- The
List
of 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
- TheBufferedReader
to 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
List
of lines in the same order as it was read - Throws:
IOException
- If failed to read the lines
-