Package org.apache.sshd.sftp.client.impl
Class AbstractSftpClient
- java.lang.Object
-
- org.apache.sshd.common.util.logging.AbstractLoggingBean
-
- org.apache.sshd.client.subsystem.AbstractSubsystemClient
-
- org.apache.sshd.sftp.client.impl.AbstractSftpClient
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,java.nio.channels.Channel,ClientChannelHolder,ClientSessionHolder,SubsystemClient,ChannelHolder,NamedResource,SessionContextHolder,SessionHolder<ClientSession>,FullAccessSftpClient,RawSftpClient,SftpClient,SftpErrorDataHandler
- Direct Known Subclasses:
DefaultSftpClient,SftpFileSystem.Wrapper
public abstract class AbstractSftpClient extends AbstractSubsystemClient implements FullAccessSftpClient, SftpErrorDataHandler
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.sshd.sftp.client.SftpClient
SftpClient.Attribute, SftpClient.Attributes, SftpClient.CloseableHandle, SftpClient.CopyMode, SftpClient.DirEntry, SftpClient.Handle, SftpClient.OpenMode
-
-
Field Summary
Fields Modifier and Type Field Description protected SftpErrorDataHandlererrorDataHandlerprivate SftpClient.AttributesfileOpenAttributesstatic intINIT_COMMAND_SIZEprivate java.util.concurrent.atomic.AtomicReference<java.util.Map<java.lang.String,java.lang.Object>>parsedExtensionsHolderstatic Property<java.time.Duration>SFTP_CLIENT_CMD_TIMEOUTProperty that can be used on theFactoryManagerto control the internal timeout used by the client to complete the buffer sending inRawSftpClient.send(int, Buffer).-
Fields inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
log
-
Fields inherited from interface org.apache.sshd.common.NamedResource
BY_NAME_COMPARATOR, NAME_EXTRACTOR
-
Fields inherited from interface org.apache.sshd.sftp.client.SftpClient
DEFAULT_CHANNEL_MODES, EMPTY_DIR_ENTRIES, IO_BUFFER_SIZE, MIN_BUFFER_SIZE, MIN_READ_BUFFER_SIZE, MIN_WRITE_BUFFER_SIZE
-
Fields inherited from interface org.apache.sshd.sftp.client.SftpErrorDataHandler
EMPTY
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractSftpClient(SftpErrorDataHandler delegateHandler)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.StringcanonicalPath(java.lang.String path)The effective "normalized" remote pathprotected SftpClient.AttributescheckAttributes(int cmd, Buffer request)protected SftpClient.AttributescheckAttributesResponse(SftpResponse response)protected voidcheckCommandStatus(int cmd, Buffer request)Sends the specified command, waits for the response and then invokescheckResponseStatus(SftpResponse)protected BuffercheckDataResponse(SftpAckData ack, SftpResponse response, java.util.concurrent.atomic.AtomicReference<java.lang.Boolean> eofSignalled)Processes a response to an SSH_FXP_READ request.protected java.util.List<SftpClient.DirEntry>checkDirResponse(SftpResponse response, java.util.concurrent.atomic.AtomicReference<java.lang.Boolean> eolIndicator)protected byte[]checkHandle(int cmd, Buffer request)protected byte[]checkHandleResponse(SftpResponse response)protected java.lang.StringcheckOneName(int cmd, Buffer request)protected java.lang.StringcheckOneNameResponse(SftpResponse response)protected voidcheckResponseStatus(int cmd, int id, SftpStatus status)protected voidcheckResponseStatus(SftpResponse response)Checks if the incoming response is anSSH_FXP_STATUSone, and if so whether the substatus isSSH_FX_OK.voidclose(SftpClient.Handle handle)Close the handle obtained from one of theopenmethodsvoiderrorData(byte[] buf, int start, int len)Receive binary data from server error streamChannelgetChannel()<E extends SftpClientExtension>
EgetExtension(java.lang.Class<? extends E> extensionType)SftpClientExtensiongetExtension(SftpClientExtensionFactory factory)protected java.util.Map<java.lang.String,java.lang.Object>getParsedServerExtensions()protected java.util.Map<java.lang.String,java.lang.Object>getParsedServerExtensions(java.util.Map<java.lang.String,byte[]> extensions)protected intgetReadBufferSize()protected java.lang.StringgetReferencedName(int cmd, Buffer buf, int nameIndex)protected intgetWriteBufferSize()protected SftpClient.AttributeshandleUnexpectedAttributesPacket(SftpResponse response)protected byte[]handleUnexpectedHandlePacket(SftpResponse response)protected java.io.IOExceptionhandleUnexpectedPacket(int expected, SftpResponse response)protected inthandleUnknownDataPacket(SftpResponse response)protected java.util.List<SftpClient.DirEntry>handleUnknownDirListingPacket(SftpResponse response)protected java.lang.StringhandleUnknownOneNamePacket(SftpResponse response)voidlink(java.lang.String linkPath, java.lang.String targetPath, boolean symbolic)Create a linkjava.lang.Iterable<SftpClient.DirEntry>listDir(SftpClient.Handle handle)voidlock(SftpClient.Handle handle, long offset, long length, int mask)SftpClient.Attributeslstat(java.lang.String path)Retrieve remote path meta-data - do not follow symbolic linksvoidmkdir(java.lang.String path)Create remote directorySftpClient.CloseableHandleopen(java.lang.String path, java.util.Collection<SftpClient.OpenMode> options)Opens a remote file with the specified mode(s)SftpClient.CloseableHandleopenDir(java.lang.String path)Obtain a handle for a directoryjava.nio.channels.FileChannelopenRemoteFileChannel(java.lang.String path, java.util.Collection<SftpClient.OpenMode> modes)Opens anFileChannelon the specified remote pathvoidput(java.io.InputStream stream, int bufferSize, java.lang.String path, java.util.Collection<SftpClient.OpenMode> modes)Write data from anInputStreamto a remote file.protected <B extends Buffer>
BputReferencedName(int cmd, B buf, java.lang.String name, int nameIndex)java.io.InputStreamread(java.lang.String path, int bufferSize, java.util.Collection<SftpClient.OpenMode> mode)Read a remote file's data via an input streamintread(SftpClient.Handle handle, long fileOffset, byte[] dst, int dstOffset, int len, java.util.concurrent.atomic.AtomicReference<java.lang.Boolean> eofSignalled)Reads data from the open (file) handleprotected SftpClient.AttributesreadAttributes(int cmd, Buffer buffer, java.util.concurrent.atomic.AtomicInteger nameIndex)java.lang.Iterable<SftpClient.DirEntry>readDir(java.lang.String path)java.util.List<SftpClient.DirEntry>readDir(SftpClient.Handle handle, java.util.concurrent.atomic.AtomicReference<java.lang.Boolean> eolIndicator)java.lang.StringreadLink(java.lang.String path)Retrieve target of a linkvoidremove(java.lang.String path)voidrename(java.lang.String oldPath, java.lang.String newPath, java.util.Collection<SftpClient.CopyMode> options)protected SftpResponseresponse(int cmd, int requestId)Receives a response buffer, validates and returns it as aSftpResponse.voidrmdir(java.lang.String path)Remove remote directoryprotected SftpResponserpc(int cmd, Buffer request)Perform an SFTP request and wait until the response has been received.private SftpClient.AttributessafeStat(java.lang.String path)voidsetStat(java.lang.String path, SftpClient.Attributes attributes)Update remote node meta-datavoidsetStat(SftpClient.Handle handle, SftpClient.Attributes attributes)Update remote node meta-dataSftpClient.Attributesstat(java.lang.String path)Retrieve remote path meta-data - follow symbolic links if encounteredSftpClient.Attributesstat(SftpClient.Handle handle)Retrieve file/directory handle meta-dataprotected voidthrowStatusException(int cmd, int id, SftpStatus status)voidunlock(SftpClient.Handle handle, long offset, long length)SftpOutputStreamAsyncwrite(java.lang.String path, int bufferSize, java.util.Collection<SftpClient.OpenMode> mode)Write to a remote file via an output streamvoidwrite(SftpClient.Handle handle, long fileOffset, byte[] src, int srcOffset, int len)Write data to (open) file handleprotected <B extends Buffer>
BwriteAttributes(int cmd, B buffer, SftpClient.Attributes attributes)-
Methods inherited from class org.apache.sshd.client.subsystem.AbstractSubsystemClient
toString
-
Methods inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
debug, debug, debug, debug, debug, error, error, error, error, error, getSimplifiedLogger, info, info, warn, warn, warn, warn, warn, warn, warn, warn
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.sshd.client.channel.ClientChannelHolder
getClientChannel
-
Methods inherited from interface org.apache.sshd.client.session.ClientSessionHolder
getClientSession
-
Methods inherited from interface org.apache.sshd.sftp.client.RawSftpClient
receive, receive, receive, send, write
-
Methods inherited from interface org.apache.sshd.common.session.SessionHolder
getSessionContext
-
Methods inherited from interface org.apache.sshd.sftp.client.SftpClient
getExtension, getName, getNameDecodingCharset, getServerExtensions, getVersion, isClosing, open, open, openRemoteFileChannel, openRemotePathChannel, openRemotePathChannel, put, put, put, put, put, put, put, put, put, put, put, read, read, read, read, read, read, read, read, readDir, readEntries, rename, rename, setNameDecodingCharset, singleSessionInstance, symLink, write, write, write, write, write, write
-
Methods inherited from interface org.apache.sshd.client.subsystem.SubsystemClient
getSession
-
-
-
-
Field Detail
-
INIT_COMMAND_SIZE
public static final int INIT_COMMAND_SIZE
- See Also:
- Constant Field Values
-
SFTP_CLIENT_CMD_TIMEOUT
public static final Property<java.time.Duration> SFTP_CLIENT_CMD_TIMEOUT
Property that can be used on theFactoryManagerto control the internal timeout used by the client to complete the buffer sending inRawSftpClient.send(int, Buffer).
-
errorDataHandler
protected final SftpErrorDataHandler errorDataHandler
-
fileOpenAttributes
private final SftpClient.Attributes fileOpenAttributes
-
parsedExtensionsHolder
private final java.util.concurrent.atomic.AtomicReference<java.util.Map<java.lang.String,java.lang.Object>> parsedExtensionsHolder
-
-
Constructor Detail
-
AbstractSftpClient
protected AbstractSftpClient(SftpErrorDataHandler delegateHandler)
-
-
Method Detail
-
getChannel
public Channel getChannel()
- Specified by:
getChannelin interfaceChannelHolder- Specified by:
getChannelin interfaceClientChannelHolder- Returns:
- The associated
Channelinstance
-
getExtension
public <E extends SftpClientExtension> E getExtension(java.lang.Class<? extends E> extensionType)
- Specified by:
getExtensionin interfaceSftpClient- 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()-nullif this extension type is not implemented by the client - See Also:
SftpClient.getServerExtensions()
-
getExtension
public SftpClientExtension getExtension(SftpClientExtensionFactory factory)
- Specified by:
getExtensionin interfaceSftpClient- Parameters:
factory- TheSftpClientExtensionFactoryinstance to use - ignored ifnull- Returns:
- The extension instance - Note: it is up to the caller to invoke
OptionalFeature.isSupported()-nullif this extension type is not implemented by the client
-
getParsedServerExtensions
protected java.util.Map<java.lang.String,java.lang.Object> getParsedServerExtensions()
-
getParsedServerExtensions
protected java.util.Map<java.lang.String,java.lang.Object> getParsedServerExtensions(java.util.Map<java.lang.String,byte[]> extensions)
-
getReferencedName
protected java.lang.String getReferencedName(int cmd, Buffer buf, int nameIndex)- Parameters:
cmd- The command that was sent whose response contains the name to be decodedbuf- TheBuffercontaining the encoded namenameIndex- The zero-based order of the requested names for the command - e.g.,- When listing a directory's contents each successive name will have an increasing index.
- For SFTP version 3, when retrieving a single name, short name will have index=0 and the long one index=1.
- Returns:
- The decoded referenced name
-
putReferencedName
protected <B extends Buffer> B putReferencedName(int cmd, B buf, java.lang.String name, int nameIndex)
- Type Parameters:
B- Type ofBufferbeing updated- Parameters:
cmd- The command for which this name is being addedbuf- The buffer instance to updatename- The name to place in the buffernameIndex- The zero-based order of the name for the specific command if more than one name required - e.g., rename, link/symbolic link- Returns:
- The updated buffer
-
rpc
protected SftpResponse rpc(int cmd, Buffer request) throws java.io.IOException
Perform an SFTP request and wait until the response has been received.- Parameters:
cmd- the SFTP command coderequest- aBuffercontaining the request data- Returns:
- the
SftpResponsefor the request - Throws:
java.io.IOException- if an error occurs
-
response
protected SftpResponse response(int cmd, int requestId) throws java.io.IOException
Receives a response buffer, validates and returns it as aSftpResponse.- Parameters:
cmd- the command of the request the response is forrequestId- the id of the request- Returns:
- the
SftpResponse - Throws:
java.io.IOException- if the received buffer is malformed
-
checkCommandStatus
protected void checkCommandStatus(int cmd, Buffer request) throws java.io.IOExceptionSends the specified command, waits for the response and then invokescheckResponseStatus(SftpResponse)- Parameters:
cmd- The command to sendrequest- The requestBuffer- Throws:
java.io.IOException- If failed to send, receive or check the returned status- See Also:
RawSftpClient.send(int, Buffer),RawSftpClient.receive(int),checkResponseStatus(SftpResponse)
-
checkResponseStatus
protected void checkResponseStatus(SftpResponse response) throws java.io.IOException
Checks if the incoming response is anSSH_FXP_STATUSone, and if so whether the substatus isSSH_FX_OK.- Parameters:
response- The receivedSftpResponse- Throws:
java.io.IOException- If response does not carry a status or carries a bad status code- See Also:
checkResponseStatus(int, int, SftpStatus)
-
checkResponseStatus
protected void checkResponseStatus(int cmd, int id, SftpStatus status) throws java.io.IOException- Parameters:
cmd- The sent command opcodeid- The request idstatus- TheSftpStatus- Throws:
java.io.IOException- if!status.isOk()- See Also:
throwStatusException(int, int, SftpStatus)
-
throwStatusException
protected void throwStatusException(int cmd, int id, SftpStatus status) throws java.io.IOException- Throws:
java.io.IOException
-
checkHandle
protected byte[] checkHandle(int cmd, Buffer request) throws java.io.IOException- Parameters:
cmd- Command to be sentrequest- TheBuffercontaining the request- Returns:
- The received handle identifier
- Throws:
java.io.IOException- If failed to send/receive or process the response- See Also:
RawSftpClient.send(int, Buffer),RawSftpClient.receive(int),checkHandleResponse(SftpResponse)
-
checkHandleResponse
protected byte[] checkHandleResponse(SftpResponse response) throws java.io.IOException
- Throws:
java.io.IOException
-
handleUnexpectedHandlePacket
protected byte[] handleUnexpectedHandlePacket(SftpResponse response) throws java.io.IOException
- Throws:
java.io.IOException
-
checkAttributes
protected SftpClient.Attributes checkAttributes(int cmd, Buffer request) throws java.io.IOException
- Parameters:
cmd- Command to be sentrequest- RequestBuffer- Returns:
- The decoded response
Attributes - Throws:
java.io.IOException- If failed to send/receive or process the response- See Also:
RawSftpClient.send(int, Buffer),RawSftpClient.receive(int),checkAttributesResponse(SftpResponse)
-
checkAttributesResponse
protected SftpClient.Attributes checkAttributesResponse(SftpResponse response) throws java.io.IOException
- Throws:
java.io.IOException
-
handleUnexpectedAttributesPacket
protected SftpClient.Attributes handleUnexpectedAttributesPacket(SftpResponse response) throws java.io.IOException
- Throws:
java.io.IOException
-
checkOneName
protected java.lang.String checkOneName(int cmd, Buffer request) throws java.io.IOException- Parameters:
cmd- Command to be sentrequest- The requestBuffer- Returns:
- The retrieved name
- Throws:
java.io.IOException- If failed to send/receive or process the response- See Also:
RawSftpClient.send(int, Buffer),RawSftpClient.receive(int),checkOneNameResponse(SftpResponse)
-
checkOneNameResponse
protected java.lang.String checkOneNameResponse(SftpResponse response) throws java.io.IOException
- Throws:
java.io.IOException
-
handleUnknownOneNamePacket
protected java.lang.String handleUnknownOneNamePacket(SftpResponse response) throws java.io.IOException
- Throws:
java.io.IOException
-
readAttributes
protected SftpClient.Attributes readAttributes(int cmd, Buffer buffer, java.util.concurrent.atomic.AtomicInteger nameIndex) throws java.io.IOException
- Throws:
java.io.IOException
-
writeAttributes
protected <B extends Buffer> B writeAttributes(int cmd, B buffer, SftpClient.Attributes attributes)
-
open
public SftpClient.CloseableHandle open(java.lang.String path, java.util.Collection<SftpClient.OpenMode> options) throws java.io.IOException
Description copied from interface:SftpClientOpens a remote file with the specified mode(s)- Specified by:
openin interfaceSftpClient- Parameters:
path- The remote pathoptions- The desired mode - if none specified thenSftpClient.OpenMode.Readis assumed- Returns:
- The file's
SftpClient.CloseableHandle - Throws:
java.io.IOException- If failed to open the remote file
-
close
public void close(SftpClient.Handle handle) throws java.io.IOException
Description copied from interface:SftpClientClose the handle obtained from one of theopenmethods- Specified by:
closein interfaceSftpClient- Parameters:
handle- TheHandleto close- Throws:
java.io.IOException- If failed to execute
-
remove
public void remove(java.lang.String path) throws java.io.IOException- Specified by:
removein interfaceSftpClient- Parameters:
path- The remote path to remove- Throws:
java.io.IOException- If failed to execute
-
rename
public void rename(java.lang.String oldPath, java.lang.String newPath, java.util.Collection<SftpClient.CopyMode> options) throws java.io.IOException- Specified by:
renamein interfaceSftpClient- Throws:
java.io.IOException
-
read
public int read(SftpClient.Handle handle, long fileOffset, byte[] dst, int dstOffset, int len, java.util.concurrent.atomic.AtomicReference<java.lang.Boolean> eofSignalled) throws java.io.IOException
Description copied from interface:SftpClientReads data from the open (file) handle- Specified by:
readin interfaceSftpClient- Parameters:
handle- The fileSftpClient.Handleto 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 notnullthen upon return holds a value indicating whether EOF was reached due to the read. Ifnullindicator value then this indication is not available- Returns:
- Number of read bytes -
-1if EOF reached - Throws:
java.io.IOException- If failed to read the data- See Also:
- SFTP v6 - section 9.3
-
checkDataResponse
protected Buffer checkDataResponse(SftpAckData ack, SftpResponse response, java.util.concurrent.atomic.AtomicReference<java.lang.Boolean> eofSignalled) throws java.io.IOException
Processes a response to an SSH_FXP_READ request.- Parameters:
ack- describing the SSH_FXP_READ requestresponse- SFTP response receivedeofSignalled- if non-null, set totrueif an EOF was received- Returns:
- a
Buffercontaining the data received (may be empty), ornullif the response was an SSH_FXP_EOF status - Throws:
java.io.IOException- on errors
-
handleUnknownDataPacket
protected int handleUnknownDataPacket(SftpResponse response) throws java.io.IOException
- Throws:
java.io.IOException
-
errorData
public void errorData(byte[] buf, int start, int len) throws java.io.IOExceptionDescription copied from interface:SftpErrorDataHandlerReceive binary data from server error stream- Specified by:
errorDatain interfaceSftpErrorDataHandler- Parameters:
buf- The buffer of the incoming datastart- Offset in buffer to read the datalen- Available data in buffer- Throws:
java.io.IOException- If failed to receive incoming data
-
write
public void write(SftpClient.Handle handle, long fileOffset, byte[] src, int srcOffset, int len) throws java.io.IOException
Description copied from interface:SftpClientWrite data to (open) file handle- Specified by:
writein interfaceSftpClient- Parameters:
handle- The fileSftpClient.HandlefileOffset- Zero-based offset to write in filesrc- Data buffersrcOffset- Offset of valid data in bufferlen- Number of bytes to write- Throws:
java.io.IOException- If failed to write the data
-
mkdir
public void mkdir(java.lang.String path) throws java.io.IOExceptionDescription copied from interface:SftpClientCreate remote directory- Specified by:
mkdirin interfaceSftpClient- Parameters:
path- Remote directory path- Throws:
java.io.IOException- If failed to execute
-
rmdir
public void rmdir(java.lang.String path) throws java.io.IOExceptionDescription copied from interface:SftpClientRemove remote directory- Specified by:
rmdirin interfaceSftpClient- Parameters:
path- Remote directory path- Throws:
java.io.IOException- If failed to execute
-
openDir
public SftpClient.CloseableHandle openDir(java.lang.String path) throws java.io.IOException
Description copied from interface:SftpClientObtain a handle for a directory- Specified by:
openDirin interfaceSftpClient- Parameters:
path- Remote directory path- Returns:
- The associated directory
SftpClient.Handle - Throws:
java.io.IOException- If failed to execute
-
readDir
public java.util.List<SftpClient.DirEntry> readDir(SftpClient.Handle handle, java.util.concurrent.atomic.AtomicReference<java.lang.Boolean> eolIndicator) throws java.io.IOException
- Specified by:
readDirin interfaceSftpClient- Parameters:
handle- DirectorySftpClient.Handleto 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 - anullvalue means that this information cannot be provided and another call toreadDiris necessary in order to verify that no more entries are pending- Returns:
- A
Listof entries -nullto indicate no more entries - Throws:
java.io.IOException- If failed to access the remote site- See Also:
- SFTP v6 - section 9.4
-
checkDirResponse
protected java.util.List<SftpClient.DirEntry> checkDirResponse(SftpResponse response, java.util.concurrent.atomic.AtomicReference<java.lang.Boolean> eolIndicator) throws java.io.IOException
- Throws:
java.io.IOException
-
handleUnknownDirListingPacket
protected java.util.List<SftpClient.DirEntry> handleUnknownDirListingPacket(SftpResponse response) throws java.io.IOException
- Throws:
java.io.IOException
-
handleUnexpectedPacket
protected java.io.IOException handleUnexpectedPacket(int expected, SftpResponse response) throws java.io.IOException- Parameters:
expected- The expected packet typeresponse- The actualSftpResponsereceived- Returns:
- The exception to throw - if
nullthen implementor assumed to handle the exception internal. Otherwise, the exception is re-thrown - Throws:
java.io.IOException- If failed to handle the exception internally
-
canonicalPath
public java.lang.String canonicalPath(java.lang.String path) throws java.io.IOExceptionDescription copied from interface:SftpClientThe effective "normalized" remote path- Specified by:
canonicalPathin interfaceSftpClient- Parameters:
path- The requested path - may be relative, and/or contain dots - e.g., ".", "..", "./foo", "../bar"- Returns:
- The effective "normalized" remote path
- Throws:
java.io.IOException- If failed to execute
-
stat
public SftpClient.Attributes stat(java.lang.String path) throws java.io.IOException
Description copied from interface:SftpClientRetrieve remote path meta-data - follow symbolic links if encountered- Specified by:
statin interfaceSftpClient- Parameters:
path- The remote path- Returns:
- The associated
SftpClient.Attributes - Throws:
java.io.IOException- If failed to execute
-
lstat
public SftpClient.Attributes lstat(java.lang.String path) throws java.io.IOException
Description copied from interface:SftpClientRetrieve remote path meta-data - do not follow symbolic links- Specified by:
lstatin interfaceSftpClient- Parameters:
path- The remote path- Returns:
- The associated
SftpClient.Attributes - Throws:
java.io.IOException- If failed to execute
-
stat
public SftpClient.Attributes stat(SftpClient.Handle handle) throws java.io.IOException
Description copied from interface:SftpClientRetrieve file/directory handle meta-data- Specified by:
statin interfaceSftpClient- Parameters:
handle- TheSftpClient.Handleobtained via one of theopencalls- Returns:
- The associated
SftpClient.Attributes - Throws:
java.io.IOException- If failed to execute
-
setStat
public void setStat(java.lang.String path, SftpClient.Attributes attributes) throws java.io.IOExceptionDescription copied from interface:SftpClientUpdate remote node meta-data- Specified by:
setStatin interfaceSftpClient- Parameters:
path- The remote pathattributes- TheSftpClient.Attributesto update- Throws:
java.io.IOException- If failed to execute
-
setStat
public void setStat(SftpClient.Handle handle, SftpClient.Attributes attributes) throws java.io.IOException
Description copied from interface:SftpClientUpdate remote node meta-data- Specified by:
setStatin interfaceSftpClient- Parameters:
handle- TheSftpClient.Handleobtained via one of theopencallsattributes- TheSftpClient.Attributesto update- Throws:
java.io.IOException- If failed to execute
-
readLink
public java.lang.String readLink(java.lang.String path) throws java.io.IOExceptionDescription copied from interface:SftpClientRetrieve target of a link- Specified by:
readLinkin interfaceSftpClient- Parameters:
path- Remote path that represents a link- Returns:
- The link target
- Throws:
java.io.IOException- If failed to execute
-
link
public void link(java.lang.String linkPath, java.lang.String targetPath, boolean symbolic) throws java.io.IOExceptionDescription copied from interface:SftpClientCreate a link- Specified by:
linkin interfaceSftpClient- Parameters:
linkPath- The link locationtargetPath- The referenced target by the linksymbolic- Iftruethen make this a symbolic link, otherwise a hard one- Throws:
java.io.IOException- If failed to execute
-
lock
public void lock(SftpClient.Handle handle, long offset, long length, int mask) throws java.io.IOException
- Specified by:
lockin interfaceSftpClient- Throws:
java.io.IOException
-
unlock
public void unlock(SftpClient.Handle handle, long offset, long length) throws java.io.IOException
- Specified by:
unlockin interfaceSftpClient- Throws:
java.io.IOException
-
readDir
public java.lang.Iterable<SftpClient.DirEntry> readDir(java.lang.String path) throws java.io.IOException
- Specified by:
readDirin interfaceSftpClient- Parameters:
path- The remote directory path- Returns:
- An
Iterablethat can be used to iterate over all the directory entries (unlikeSftpClient.readDir(Handle)) - Throws:
java.io.IOException- If failed to access the remote site- See Also:
SftpClient.readDir(Handle)
-
listDir
public java.lang.Iterable<SftpClient.DirEntry> listDir(SftpClient.Handle handle) throws java.io.IOException
- Specified by:
listDirin interfaceSftpClient- Parameters:
handle- A directorySftpClient.Handle- Returns:
- An
Iterablethat can be used to iterate over all the directory entries (likeSftpClient.readDir(String)). Note: the iterable instance is not re-usable - i.e., files can be iterated only once - Throws:
java.io.IOException- If failed to access the directory
-
openRemoteFileChannel
public java.nio.channels.FileChannel openRemoteFileChannel(java.lang.String path, java.util.Collection<SftpClient.OpenMode> modes) throws java.io.IOExceptionDescription copied from interface:SftpClientOpens anFileChannelon the specified remote path- Specified by:
openRemoteFileChannelin interfaceSftpClient- Parameters:
path- The remote pathmodes- The access mode(s) - ifnull/empty then theSftpClient.DEFAULT_CHANNEL_MODESare 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:
java.io.IOException- If failed to open the channel- See Also:
Channels.newInputStream(java.nio.channels.ReadableByteChannel),Channels.newOutputStream(java.nio.channels.WritableByteChannel)
-
read
public java.io.InputStream read(java.lang.String path, int bufferSize, java.util.Collection<SftpClient.OpenMode> mode) throws java.io.IOExceptionDescription copied from interface:SftpClientRead a remote file's data via an input stream- Specified by:
readin interfaceSftpClient- Parameters:
path- The remote file pathbufferSize- The internal read buffer sizemode- The remote fileSftpClient.OpenModes- Returns:
- An
InputStreamfor reading the remote file data - Throws:
java.io.IOException- If failed to execute
-
write
public SftpOutputStreamAsync write(java.lang.String path, int bufferSize, java.util.Collection<SftpClient.OpenMode> mode) throws java.io.IOException
Description copied from interface:SftpClientWrite to a remote file via an output stream- Specified by:
writein interfaceSftpClient- Parameters:
path- The remote file pathbufferSize- The internal write buffer sizemode- The remote fileSftpClient.OpenModes- Returns:
- An
OutputStreamfor writing the data - Throws:
java.io.IOException- If failed to execute
-
safeStat
private SftpClient.Attributes safeStat(java.lang.String path) throws java.io.IOException
- Throws:
java.io.IOException
-
put
public void put(java.io.InputStream stream, int bufferSize, java.lang.String path, java.util.Collection<SftpClient.OpenMode> modes) throws java.io.IOExceptionDescription copied from interface:SftpClientWrite data from anInputStreamto a remote file.- Specified by:
putin interfaceSftpClient- Parameters:
stream-InputStreamto 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 pathmodes- The remote fileSftpClient.OpenModes- Throws:
java.io.IOException- if data cannot be read, or cannot be written
-
getReadBufferSize
protected int getReadBufferSize()
-
getWriteBufferSize
protected int getWriteBufferSize()
-
-