Package org.apache.sshd.sftp.client
Interface SftpClient
- All Superinterfaces:
AutoCloseable
,Channel
,ChannelHolder
,ClientChannelHolder
,ClientSessionHolder
,Closeable
,NamedResource
,SessionContextHolder
,SessionHolder<ClientSession>
,SubsystemClient
- All Known Subinterfaces:
FullAccessSftpClient
- All Known Implementing Classes:
AbstractSftpClient
,DefaultSftpClient
,SftpFileSystem.Wrapper
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic enum
static class
static class
static enum
static class
static class
static enum
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Set
<SftpClient.OpenMode> Default modes for opening a channel if no specific modes specifiedstatic final SftpClient.DirEntry[]
static final int
static final int
static final int
static final int
Fields inherited from interface org.apache.sshd.common.NamedResource
BY_NAME_COMPARATOR, NAME_EXTRACTOR
-
Method Summary
Modifier and TypeMethodDescriptioncanonicalPath
(String path) The effective "normalized" remote pathvoid
close
(SftpClient.Handle handle) Close the handle obtained from one of theopen
methodsdefault <E extends SftpClientExtension>
EgetExtension
(Class<? extends E> extensionType) default SftpClientExtension
getExtension
(String extensionName) getExtension
(SftpClientExtensionFactory factory) default String
getName()
NavigableMap
<String, byte[]> int
boolean
void
Create a linklistDir
(SftpClient.Handle handle) void
lock
(SftpClient.Handle handle, long offset, long length, int mask) Retrieve remote path meta-data - do not follow symbolic linksvoid
Create remote directorydefault SftpClient.CloseableHandle
Opens a remote file for readopen
(String path, Collection<SftpClient.OpenMode> options) Opens a remote file with the specified mode(s)default SftpClient.CloseableHandle
open
(String path, SftpClient.OpenMode... options) Opens a remote file with the specified mode(s)Obtain a handle for a directoryopenRemoteFileChannel
(String path, Collection<SftpClient.OpenMode> modes) Opens anFileChannel
on the specified remote pathdefault FileChannel
openRemoteFileChannel
(String path, SftpClient.OpenMode... modes) default FileChannel
openRemotePathChannel
(String path, OpenOption... options) default FileChannel
openRemotePathChannel
(String path, Collection<? extends OpenOption> options) default void
put
(InputStream stream, int bufferSize, String path) void
put
(InputStream stream, int bufferSize, String path, Collection<SftpClient.OpenMode> modes) Write data from anInputStream
to a remote file.default void
put
(InputStream stream, int bufferSize, String path, SftpClient.OpenMode... modes) default void
put
(InputStream stream, String path) default void
put
(InputStream stream, String path, Collection<SftpClient.OpenMode> modes) default void
put
(InputStream stream, String path, SftpClient.OpenMode... modes) default void
default void
put
(Path localFile, int bufferSize, String path, Collection<SftpClient.OpenMode> modes) Uploads a local file to a remote file.default void
put
(Path localFile, int bufferSize, String path, SftpClient.OpenMode... modes) default void
default void
put
(Path localFile, String path, Collection<SftpClient.OpenMode> modes) default void
put
(Path localFile, String path, SftpClient.OpenMode... modes) default InputStream
default InputStream
read
(String path, int bufferSize, Collection<SftpClient.OpenMode> mode) Read a remote file's data via an input streamdefault InputStream
read
(String path, int bufferSize, SftpClient.OpenMode... mode) default InputStream
read
(String path, Collection<SftpClient.OpenMode> mode) default InputStream
read
(String path, SftpClient.OpenMode... mode) default int
read
(SftpClient.Handle handle, long fileOffset, byte[] dst) Reads data from the open (file) handledefault int
read
(SftpClient.Handle handle, long fileOffset, byte[] dst, int dstOffset, int len) int
read
(SftpClient.Handle handle, long fileOffset, byte[] dst, int dstOffset, int len, AtomicReference<Boolean> eofSignalled) Reads data from the open (file) handledefault int
read
(SftpClient.Handle handle, long fileOffset, byte[] dst, AtomicReference<Boolean> eofSignalled) Reads data from the open (file) handledefault List
<SftpClient.DirEntry> readDir
(SftpClient.Handle handle) readDir
(SftpClient.Handle handle, AtomicReference<Boolean> eolIndicator) default Collection
<SftpClient.DirEntry> readEntries
(String path) Reads all entries available for a directoryRetrieve target of a linkvoid
default void
void
rename
(String oldPath, String newPath, Collection<SftpClient.CopyMode> options) default void
rename
(String oldPath, String newPath, SftpClient.CopyMode... options) void
Remove remote directoryvoid
void
setStat
(String path, SftpClient.Attributes attributes) Update remote node meta-datavoid
setStat
(SftpClient.Handle handle, SftpClient.Attributes attributes) Update remote node meta-datadefault SftpClient
Creates anSftpClient
instance that also closes the underlyingclient session
when the client instance is closed.Retrieve remote path meta-data - follow symbolic links if encounteredstat
(SftpClient.Handle handle) Retrieve file/directory handle meta-datadefault void
Create symbolic linkvoid
unlock
(SftpClient.Handle handle, long offset, long length) default OutputStream
default OutputStream
write
(String path, int bufferSize, Collection<SftpClient.OpenMode> mode) Write to a remote file via an output streamdefault OutputStream
write
(String path, int bufferSize, SftpClient.OpenMode... mode) default OutputStream
write
(String path, Collection<SftpClient.OpenMode> mode) default OutputStream
write
(String path, SftpClient.OpenMode... mode) default void
write
(SftpClient.Handle handle, long fileOffset, byte[] src) void
write
(SftpClient.Handle handle, long fileOffset, byte[] src, int srcOffset, int len) Write data to (open) file handleMethods inherited from interface org.apache.sshd.client.channel.ClientChannelHolder
getChannel, getClientChannel
Methods inherited from interface org.apache.sshd.client.session.ClientSessionHolder
getClientSession
Methods inherited from interface org.apache.sshd.common.session.SessionHolder
getSessionContext
Methods inherited from interface org.apache.sshd.client.subsystem.SubsystemClient
getSession
-
Field Details
-
EMPTY_DIR_ENTRIES
-
MIN_BUFFER_SIZE
static final int MIN_BUFFER_SIZE- See Also:
-
MIN_READ_BUFFER_SIZE
static final int MIN_READ_BUFFER_SIZE- See Also:
-
MIN_WRITE_BUFFER_SIZE
static final int MIN_WRITE_BUFFER_SIZE- See Also:
-
IO_BUFFER_SIZE
static final int IO_BUFFER_SIZE- See Also:
-
DEFAULT_CHANNEL_MODES
Default modes for opening a channel if no specific modes specified
-
-
Method Details
-
getVersion
int getVersion()- Returns:
- The negotiated SFTP protocol version
-
getName
- Specified by:
getName
in interfaceNamedResource
- Returns:
- The resource name
-
getNameDecodingCharset
Charset getNameDecodingCharset()- Returns:
- The (never
null
)Charset
used to decode referenced files/folders names - See Also:
-
setNameDecodingCharset
-
getServerExtensions
NavigableMap<String,byte[]> getServerExtensions()- Returns:
- An (unmodifiable)
NavigableMap
of the reported server extensions. where key=extension name (case insensitive)
-
isClosing
boolean isClosing() -
open
Opens a remote file for read- Parameters:
path
- The remote path- Returns:
- The file's
SftpClient.CloseableHandle
- Throws:
IOException
- If failed to open the remote file- See Also:
-
open
default SftpClient.CloseableHandle open(String path, SftpClient.OpenMode... options) throws IOException Opens a remote file with the specified mode(s)- Parameters:
path
- The remote pathoptions
- The desired mode - if none specified thenSftpClient.OpenMode.Read
is assumed- Returns:
- The file's
SftpClient.CloseableHandle
- Throws:
IOException
- If failed to open the remote file- See Also:
-
open
SftpClient.CloseableHandle open(String path, Collection<SftpClient.OpenMode> options) throws IOException Opens a remote file with the specified mode(s)- Parameters:
path
- The remote pathoptions
- The desired mode - if none specified thenSftpClient.OpenMode.Read
is assumed- Returns:
- The file's
SftpClient.CloseableHandle
- Throws:
IOException
- If failed to open the remote file
-
close
Close the handle obtained from one of theopen
methods- Parameters:
handle
- TheHandle
to close- Throws:
IOException
- If failed to execute
-
remove
- Parameters:
path
- The remote path to remove- Throws:
IOException
- If failed to execute
-
rename
- Throws:
IOException
-
rename
default void rename(String oldPath, String newPath, SftpClient.CopyMode... options) throws IOException - Throws:
IOException
-
rename
void rename(String oldPath, String newPath, Collection<SftpClient.CopyMode> options) throws IOException - Throws:
IOException
-
read
Reads data from the open (file) handle- Parameters:
handle
- The fileSftpClient.Handle
to read fromfileOffset
- The file offset to read fromdst
- The destination buffer- Returns:
- Number of read bytes -
-1
if EOF reached - Throws:
IOException
- If failed to read the data- See Also:
-
read
default int read(SftpClient.Handle handle, long fileOffset, byte[] dst, AtomicReference<Boolean> eofSignalled) throws IOException Reads data from the open (file) handle- Parameters:
handle
- The fileSftpClient.Handle
to read fromfileOffset
- The file offset to read fromdst
- The destination buffereofSignalled
- If notnull
then upon return holds a value indicating whether EOF was reached due to the read. Ifnull
indicator value then this indication is not available- Returns:
- Number of read bytes -
-1
if EOF reached - Throws:
IOException
- If failed to read the data- See Also:
-
read
default int read(SftpClient.Handle handle, long fileOffset, byte[] dst, int dstOffset, int len) throws IOException - Throws:
IOException
-
read
int read(SftpClient.Handle handle, long fileOffset, byte[] dst, int dstOffset, int len, AtomicReference<Boolean> eofSignalled) throws IOException Reads data from the open (file) handle- Parameters:
handle
- The fileSftpClient.Handle
to read fromfileOffset
- The file offset to read fromdst
- The destination bufferdstOffset
- Offset in destination buffer to place the read datalen
- Available destination buffer size to readeofSignalled
- If notnull
then upon return holds a value indicating whether EOF was reached due to the read. Ifnull
indicator value then this indication is not available- Returns:
- Number of read bytes -
-1
if EOF reached - Throws:
IOException
- If failed to read the data- See Also:
-
write
- Throws:
IOException
-
write
void write(SftpClient.Handle handle, long fileOffset, byte[] src, int srcOffset, int len) throws IOException Write data to (open) file handle- Parameters:
handle
- The fileSftpClient.Handle
fileOffset
- Zero-based offset to write in filesrc
- Data buffersrcOffset
- Offset of valid data in bufferlen
- Number of bytes to write- Throws:
IOException
- If failed to write the data
-
mkdir
Create remote directory- Parameters:
path
- Remote directory path- Throws:
IOException
- If failed to execute
-
rmdir
Remove remote directory- Parameters:
path
- Remote directory path- Throws:
IOException
- If failed to execute
-
openDir
Obtain a handle for a directory- Parameters:
path
- Remote directory path- Returns:
- The associated directory
SftpClient.Handle
- Throws:
IOException
- If failed to execute
-
readDir
- Parameters:
handle
- DirectorySftpClient.Handle
to read from- Returns:
- A
List
of entries -null
to indicate no more entries Note: the list may be incomplete since the client and server have some internal imposed limit on the number of entries they can process. Therefore several calls to this method may be required (untilnull
). In order to iterate over all the entries usereadDir(String)
- Throws:
IOException
- If failed to access the remote site
-
readDir
List<SftpClient.DirEntry> readDir(SftpClient.Handle handle, AtomicReference<Boolean> eolIndicator) throws IOException - Parameters:
handle
- DirectorySftpClient.Handle
to read fromeolIndicator
- An indicator that can be used to get information whether end of list has been reached - ignored ifnull
. Upon return, set value indicates whether all entries have been exhausted - anull
value means that this information cannot be provided and another call toreadDir
is necessary in order to verify that no more entries are pending- Returns:
- A
List
of entries -null
to indicate no more entries - Throws:
IOException
- If failed to access the remote site- See Also:
-
listDir
- Parameters:
handle
- A directorySftpClient.Handle
- Returns:
- An
Iterable
that can be used to iterate over all the directory entries (likereadDir(String)
). Note: the iterable instance is not re-usable - i.e., files can be iterated only once - Throws:
IOException
- If failed to access the directory
-
canonicalPath
The effective "normalized" remote path- Parameters:
path
- The requested path - may be relative, and/or contain dots - e.g., ".", "..", "./foo", "../bar"- Returns:
- The effective "normalized" remote path
- Throws:
IOException
- If failed to execute
-
stat
Retrieve remote path meta-data - follow symbolic links if encountered- Parameters:
path
- The remote path- Returns:
- The associated
SftpClient.Attributes
- Throws:
IOException
- If failed to execute
-
lstat
Retrieve remote path meta-data - do not follow symbolic links- Parameters:
path
- The remote path- Returns:
- The associated
SftpClient.Attributes
- Throws:
IOException
- If failed to execute
-
stat
Retrieve file/directory handle meta-data- Parameters:
handle
- TheSftpClient.Handle
obtained via one of theopen
calls- Returns:
- The associated
SftpClient.Attributes
- Throws:
IOException
- If failed to execute
-
setStat
Update remote node meta-data- Parameters:
path
- The remote pathattributes
- TheSftpClient.Attributes
to update- Throws:
IOException
- If failed to execute
-
setStat
Update remote node meta-data- Parameters:
handle
- TheSftpClient.Handle
obtained via one of theopen
callsattributes
- TheSftpClient.Attributes
to update- Throws:
IOException
- If failed to execute
-
readLink
Retrieve target of a link- Parameters:
path
- Remote path that represents a link- Returns:
- The link target
- Throws:
IOException
- If failed to execute
-
symLink
Create symbolic link- Parameters:
linkPath
- The link locationtargetPath
- The referenced target by the link- Throws:
IOException
- If failed to execute- See Also:
-
link
Create a link- Parameters:
linkPath
- The link locationtargetPath
- The referenced target by the linksymbolic
- Iftrue
then make this a symbolic link, otherwise a hard one- Throws:
IOException
- If failed to execute
-
lock
- Throws:
IOException
-
unlock
- Throws:
IOException
-
openRemotePathChannel
- Throws:
IOException
-
openRemotePathChannel
default FileChannel openRemotePathChannel(String path, Collection<? extends OpenOption> options) throws IOException - Throws:
IOException
-
openRemoteFileChannel
default FileChannel openRemoteFileChannel(String path, SftpClient.OpenMode... modes) throws IOException - Throws:
IOException
-
openRemoteFileChannel
FileChannel openRemoteFileChannel(String path, Collection<SftpClient.OpenMode> modes) throws IOException Opens anFileChannel
on the specified remote path- Parameters:
path
- The remote pathmodes
- The access mode(s) - ifnull
/empty then theDEFAULT_CHANNEL_MODES
are used- Returns:
- The open
FileChannel
- Note: do not close this owner client instance until the channel is no longer needed since it uses the client for providing the channel's functionality. - Throws:
IOException
- If failed to open the channel- See Also:
-
readDir
- Parameters:
path
- The remote directory path- Returns:
- An
Iterable
that can be used to iterate over all the directory entries (unlikereadDir(Handle)
) - Throws:
IOException
- If failed to access the remote site- See Also:
-
readEntries
Reads all entries available for a directory- Parameters:
path
- Remote directory path- Returns:
- A
Collection
of all the entries in the remote directory - Throws:
IOException
- If failed to retrieve the entries- See Also:
-
read
- Throws:
IOException
-
read
- Throws:
IOException
-
read
- Throws:
IOException
-
read
default InputStream read(String path, int bufferSize, SftpClient.OpenMode... mode) throws IOException - Throws:
IOException
-
read
- Throws:
IOException
-
read
InputStream read(String path, int bufferSize, Collection<SftpClient.OpenMode> mode) throws IOException Read a remote file's data via an input stream- Parameters:
path
- The remote file pathbufferSize
- The internal read buffer sizemode
- The remote fileSftpClient.OpenMode
s- Returns:
- An
InputStream
for reading the remote file data - Throws:
IOException
- If failed to execute
-
write
- Throws:
IOException
-
write
- Throws:
IOException
-
write
- Throws:
IOException
-
write
default OutputStream write(String path, int bufferSize, SftpClient.OpenMode... mode) throws IOException - Throws:
IOException
-
write
- Throws:
IOException
-
write
OutputStream write(String path, int bufferSize, Collection<SftpClient.OpenMode> mode) throws IOException Write to a remote file via an output stream- Parameters:
path
- The remote file pathbufferSize
- The internal write buffer sizemode
- The remote fileSftpClient.OpenMode
s- Returns:
- An
OutputStream
for writing the data - Throws:
IOException
- If failed to execute
-
put
- Throws:
IOException
-
put
- Throws:
IOException
-
put
- Throws:
IOException
-
put
- Throws:
IOException
-
put
- Throws:
IOException
-
put
- Throws:
IOException
-
put
default void put(Path localFile, int bufferSize, String path, SftpClient.OpenMode... modes) throws IOException - Throws:
IOException
-
put
default void put(InputStream stream, int bufferSize, String path, SftpClient.OpenMode... modes) throws IOException - Throws:
IOException
-
put
default void put(Path localFile, String path, Collection<SftpClient.OpenMode> modes) throws IOException - Throws:
IOException
-
put
default void put(InputStream stream, String path, Collection<SftpClient.OpenMode> modes) throws IOException - Throws:
IOException
-
put
default void put(Path localFile, int bufferSize, String path, Collection<SftpClient.OpenMode> modes) throws IOException Uploads a local file to a remote file.- Parameters:
localFile
-Path
of the local file to uploadbufferSize
- SFTP packet size; i.e., amount of data to send in a single SFTP request. Most servers have a limit of 256kB. If zero, a default buffer size is chosen depending on the peer's channel packet size; so typically about 32kB.path
- The remote file pathmode
- The remote fileSftpClient.OpenMode
s- Throws:
IOException
- if data cannot be read, or cannot be written
-
put
void put(InputStream stream, int bufferSize, String path, Collection<SftpClient.OpenMode> modes) throws IOException Write data from anInputStream
to a remote file.- Parameters:
stream
-InputStream
to read frombufferSize
- SFTP packet size; i.e., amount of data to send in a single SFTP request. Most servers have a limit of 256kB. If zero, a default buffer size is chosen depending on the peer's channel packet size; so typically about 32kB.path
- The remote file pathmode
- The remote fileSftpClient.OpenMode
s- Throws:
IOException
- if data cannot be read, or cannot be written
-
getExtension
- Type Parameters:
E
- The generic extension type- Parameters:
extensionType
- The extension type- Returns:
- The extension instance - Note: it is up to the caller to invoke
OptionalFeature.isSupported()
-null
if this extension type is not implemented by the client - See Also:
-
getExtension
- Parameters:
extensionName
- The extension name- Returns:
- The extension instance - Note: it is up to the caller to invoke
OptionalFeature.isSupported()
-null
if this extension type is not implemented by the client - See Also:
-
getExtension
- Parameters:
factory
- TheSftpClientExtensionFactory
instance to use - ignored ifnull
- Returns:
- The extension instance - Note: it is up to the caller to invoke
OptionalFeature.isSupported()
-null
if this extension type is not implemented by the client
-
singleSessionInstance
Creates anSftpClient
instance that also closes the underlyingclient session
when the client instance is closed.- Returns:
- The wrapper instance
-