public class SftpFileObject extends AbstractFileObject<SftpFileSystem>
Modifier and Type | Class and Description |
---|---|
private class |
SftpFileObject.SftpInputStream
An InputStream that monitors for end-of-file.
|
private class |
SftpFileObject.SftpOutputStream
An OutputStream that wraps an sftp OutputStream, and closes the channel when the stream is closed.
|
Modifier and Type | Field and Description |
---|---|
private com.jcraft.jsch.SftpATTRS |
attrs |
private boolean |
inRefresh |
private static long |
MOD_TIME_FACTOR |
private java.lang.String |
relPath |
Modifier | Constructor and Description |
---|---|
protected |
SftpFileObject(AbstractFileName name,
SftpFileSystem fileSystem) |
Modifier and Type | Method and Description |
---|---|
protected void |
doCreateFolder()
Creates this file as a folder.
|
protected void |
doDelete()
Deletes the file.
|
protected void |
doDetach()
Detaches this file object from its file resource.
|
protected long |
doGetContentSize()
Returns the size of the file content (in bytes).
|
protected java.io.InputStream |
doGetInputStream()
Creates an input stream to read the file content from.
|
protected long |
doGetLastModifiedTime()
Returns the last modified time of this file.
|
protected java.io.OutputStream |
doGetOutputStream(boolean bAppend)
Creates an output stream to write the file content to.
|
protected RandomAccessContent |
doGetRandomAccessContent(RandomAccessMode mode)
Creates access to the file for random i/o.
|
protected FileType |
doGetType()
Determines the type of this file, returns null if the file does not exist.
|
protected boolean |
doIsExecutable()
Determines if this file is executable.
|
protected boolean |
doIsReadable()
Determines if this file can be read.
|
protected boolean |
doIsWriteable()
Determines if this file can be written to.
|
protected java.lang.String[] |
doListChildren()
Lists the children of this file.
|
protected FileObject[] |
doListChildrenResolved()
Lists the children of this file.
|
protected void |
doRename(FileObject newFile)
Renames the file.
|
protected boolean |
doSetExecutable(boolean executable,
boolean ownerOnly)
Make the file executable.
|
protected boolean |
doSetLastModifiedTime(long modtime)
Sets the last modified time of this file.
|
protected boolean |
doSetReadable(boolean readable,
boolean ownerOnly)
Make the file or folder readable.
|
protected boolean |
doSetWritable(boolean writable,
boolean ownerOnly)
Make the file or folder writeable.
|
private void |
flushStat() |
(package private) java.io.InputStream |
getInputStream(long filePointer)
Creates an input stream to read the file content from.
|
protected PosixPermissions |
getPermissions(boolean checkIds)
Returns the POSIX type permissions of the file.
|
protected void |
onChange()
Called when the type or content of this file changes.
|
private void |
setStat(com.jcraft.jsch.SftpATTRS attrs)
Sets attrs from listChildrenResolved
|
private void |
statSelf()
Fetches file attributes from server.
|
canRenameTo, childrenChanged, close, compareTo, copyFrom, createFile, createFolder, delete, delete, deleteAll, doAttach, doCreateFileContent, doGetAttributes, doGetCertificates, doIsHidden, doIsSameFile, doIsSymbolicLink, doRemoveAttribute, doSetAttribute, endOutput, exists, finalize, findFiles, findFiles, getAbstractFileSystem, getChild, getChildren, getContent, getFileContentInfoFactory, getFileOperations, getFileSystem, getInputStream, getName, getOutputStream, getOutputStream, getParent, getPublicURIString, getRandomAccessContent, getType, getURL, handleChanged, handleCreate, handleDelete, holdObject, injectType, isAttached, isContentOpen, isExecutable, isFile, isFolder, isHidden, isReadable, isSameFile, isSymbolicLink, isWriteable, iterator, listFiles, moveTo, notifyAllStreamsClosed, onChildrenChanged, refresh, resolveFile, resolveFile, setExecutable, setReadable, setWritable, toString
private static final long MOD_TIME_FACTOR
private com.jcraft.jsch.SftpATTRS attrs
private final java.lang.String relPath
private boolean inRefresh
protected SftpFileObject(AbstractFileName name, SftpFileSystem fileSystem) throws FileSystemException
FileSystemException
protected void doDetach() throws java.lang.Exception
AbstractFileObject
Called when this file is closed. Note that the file object may be reused later, so should be able to be reattached.
This implementation does nothing.
doDetach
in class AbstractFileObject<SftpFileSystem>
java.lang.Exception
- if an error occurs.protected FileType doGetType() throws java.lang.Exception
doGetType
in class AbstractFileObject<SftpFileSystem>
java.lang.Exception
- if an error occurs.protected void onChange() throws java.lang.Exception
onChange
in class AbstractFileObject<SftpFileSystem>
java.lang.Exception
- if an error occurs.private void statSelf() throws java.io.IOException
java.io.IOException
private void setStat(com.jcraft.jsch.SftpATTRS attrs)
protected void doCreateFolder() throws java.lang.Exception
doCreateFolder
in class AbstractFileObject<SftpFileSystem>
java.lang.Exception
- if an error occurs.protected long doGetLastModifiedTime() throws java.lang.Exception
AbstractFileObject
AbstractFileObject.doGetType()
does not return
FileType.IMAGINARY
.
This implementation throws an exception.
doGetLastModifiedTime
in class AbstractFileObject<SftpFileSystem>
java.lang.Exception
- if an error occurs.protected boolean doSetLastModifiedTime(long modtime) throws java.lang.Exception
doGetType()
does not return
FileType.IMAGINARY
.doSetLastModifiedTime
in class AbstractFileObject<SftpFileSystem>
modtime
- is modification time in milliseconds. SFTP protocol can send times with nanosecond precision but
at the moment jsch send them with second precision.java.lang.Exception
- Any Exception thrown is wrapped in FileSystemException.private void flushStat() throws java.io.IOException, com.jcraft.jsch.SftpException
java.io.IOException
com.jcraft.jsch.SftpException
protected void doDelete() throws java.lang.Exception
doDelete
in class AbstractFileObject<SftpFileSystem>
java.lang.Exception
- if an error occurs.protected void doRename(FileObject newFile) throws java.lang.Exception
doRename
in class AbstractFileObject<SftpFileSystem>
newFile
- A FileObject with the new file name.java.lang.Exception
- if an error occurs.protected PosixPermissions getPermissions(boolean checkIds) throws java.lang.Exception
checkIds
- true
if user and group ID should be checked (needed for some access rights checks)java.lang.Exception
- If an error occursprotected boolean doIsReadable() throws java.lang.Exception
AbstractFileObject
AbstractFileObject.doGetType()
does not return
FileType.IMAGINARY
.
This implementation always returns true.
doIsReadable
in class AbstractFileObject<SftpFileSystem>
java.lang.Exception
- if an error occurs.protected boolean doSetReadable(boolean readable, boolean ownerOnly) throws java.lang.Exception
AbstractFileObject
Only called if AbstractFileObject.doGetType()
does not return FileType.IMAGINARY
.
This implementation returns false.
doSetReadable
in class AbstractFileObject<SftpFileSystem>
readable
- True to allow access, false to disallowownerOnly
- If true
, the permission applies only to the owner; otherwise, it applies to everybody.java.lang.Exception
- Any Exception thrown is wrapped in FileSystemException.AbstractFileObject.setReadable(boolean, boolean)
protected boolean doIsWriteable() throws java.lang.Exception
AbstractFileObject
AbstractFileObject.doGetType()
does not return
FileType.IMAGINARY
.
This implementation always returns true.
doIsWriteable
in class AbstractFileObject<SftpFileSystem>
java.lang.Exception
- if an error occurs.protected boolean doSetWritable(boolean writable, boolean ownerOnly) throws java.lang.Exception
AbstractFileObject
Only called if AbstractFileObject.doGetType()
does not return FileType.IMAGINARY
.
doSetWritable
in class AbstractFileObject<SftpFileSystem>
writable
- True to allow access, false to disallowownerOnly
- If true
, the permission applies only to the owner; otherwise, it applies to everybody.java.lang.Exception
- Any Exception thrown is wrapped in FileSystemException.AbstractFileObject.setWritable(boolean, boolean)
protected boolean doIsExecutable() throws java.lang.Exception
AbstractFileObject
AbstractFileObject.doGetType()
does not return
FileType.IMAGINARY
.
This implementation always returns false.
doIsExecutable
in class AbstractFileObject<SftpFileSystem>
java.lang.Exception
- if an error occurs.protected boolean doSetExecutable(boolean executable, boolean ownerOnly) throws java.lang.Exception
AbstractFileObject
Only called if AbstractFileObject.doGetType()
does not return FileType.IMAGINARY
.
This implementation returns false.
doSetExecutable
in class AbstractFileObject<SftpFileSystem>
executable
- True to allow access, false to disallow.ownerOnly
- If true
, the permission applies only to the owner; otherwise, it applies to everybody.java.lang.Exception
- Any Exception thrown is wrapped in FileSystemException.AbstractFileObject.setExecutable(boolean, boolean)
protected FileObject[] doListChildrenResolved() throws java.lang.Exception
doListChildrenResolved
in class AbstractFileObject<SftpFileSystem>
java.lang.Exception
- if an error occurs.protected java.lang.String[] doListChildren() throws java.lang.Exception
doListChildren
in class AbstractFileObject<SftpFileSystem>
java.lang.Exception
- if an error occurs.protected long doGetContentSize() throws java.lang.Exception
doGetContentSize
in class AbstractFileObject<SftpFileSystem>
java.lang.Exception
- if an error occurs.protected RandomAccessContent doGetRandomAccessContent(RandomAccessMode mode) throws java.lang.Exception
AbstractFileObject
AbstractFileObject.doGetType()
returns FileType.FILE
.
It is guaranteed that there are no open output streams for this file when this method is called.
doGetRandomAccessContent
in class AbstractFileObject<SftpFileSystem>
mode
- The mode to access the file.java.lang.Exception
- if an error occurs.java.io.InputStream getInputStream(long filePointer) throws java.io.IOException
java.io.IOException
protected java.io.InputStream doGetInputStream() throws java.lang.Exception
doGetInputStream
in class AbstractFileObject<SftpFileSystem>
java.lang.Exception
- if an error occurs.protected java.io.OutputStream doGetOutputStream(boolean bAppend) throws java.lang.Exception
doGetOutputStream
in class AbstractFileObject<SftpFileSystem>
bAppend
- true if the file should be appended to, false if it should be overwritten.java.lang.Exception
- if an error occurs.