public class FtpFileObject extends AbstractFileObject<FtpFileSystem>
Modifier and Type | Class and Description |
---|---|
(package private) class |
FtpFileObject.FtpInputStream
An InputStream that monitors for end-of-file.
|
private class |
FtpFileObject.FtpOutputStream
An OutputStream that monitors for end-of-file.
|
Modifier and Type | Field and Description |
---|---|
private java.util.Map<java.lang.String,org.apache.commons.net.ftp.FTPFile> |
children |
private static long |
DEFAULT_TIMESTAMP |
private static java.util.Map<java.lang.String,org.apache.commons.net.ftp.FTPFile> |
EMPTY_FTP_FILE_MAP |
private org.apache.commons.net.ftp.FTPFile |
fileInfo |
private java.util.concurrent.atomic.AtomicBoolean |
inRefresh |
private FileObject |
linkDestination |
private static org.apache.commons.logging.Log |
log |
private java.lang.String |
relPath |
private static org.apache.commons.net.ftp.FTPFile |
UNKNOWN |
Modifier | Constructor and Description |
---|---|
protected |
FtpFileObject(AbstractFileName name,
FtpFileSystem fileSystem,
FileName rootName) |
Modifier and Type | Method and Description |
---|---|
protected void |
doAttach()
Attaches this file object to its file resource.
|
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.
|
private void |
doGetChildren()
Fetches the children of this file, if not already cached.
|
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()
get the last modified time on an ftp 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 the file, returns null if the file does not exist.
|
protected java.lang.String[] |
doListChildren()
Lists the children of the file.
|
protected FileObject[] |
doListChildrenResolved()
Lists the children of this file.
|
protected void |
doRename(FileObject newFile)
Renames the file
|
private org.apache.commons.net.ftp.FTPFile |
getChildFile(java.lang.String name,
boolean flush)
Called by child file objects, to locate their ftp file info.
|
FileObject[] |
getChildren()
Returns the file's list of children.
|
private void |
getInfo(boolean flush)
Fetches the info for this file.
|
(package private) FtpFileObject.FtpInputStream |
getInputStream(long filePointer) |
private FileObject |
getLinkDestination() |
(package private) java.lang.String |
getRelPath() |
private long |
getTimestamp() |
private boolean |
isCircular(FileObject linkDest)
This is an over simplistic implementation for VFS-437.
|
protected void |
onChange()
Called when the type or content of this file changes.
|
protected void |
onChildrenChanged(FileName child,
FileType newType)
Called when the children of this file change.
|
void |
refresh()
This will prepare the fileObject to get resynchronized with the underlying file system if required.
|
canRenameTo, childrenChanged, close, compareTo, copyFrom, createFile, createFolder, delete, delete, deleteAll, doCreateFileContent, doGetAttributes, doGetCertificates, doIsExecutable, doIsHidden, doIsReadable, doIsSameFile, doIsSymbolicLink, doIsWriteable, doRemoveAttribute, doSetAttribute, doSetExecutable, doSetLastModifiedTime, doSetReadable, doSetWritable, endOutput, exists, finalize, findFiles, findFiles, getAbstractFileSystem, getChild, 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, resolveFile, resolveFile, setExecutable, setReadable, setWritable, toString
private static final long DEFAULT_TIMESTAMP
private static final java.util.Map<java.lang.String,org.apache.commons.net.ftp.FTPFile> EMPTY_FTP_FILE_MAP
private static final org.apache.commons.net.ftp.FTPFile UNKNOWN
private static final org.apache.commons.logging.Log log
private final java.lang.String relPath
private volatile org.apache.commons.net.ftp.FTPFile fileInfo
private volatile java.util.Map<java.lang.String,org.apache.commons.net.ftp.FTPFile> children
private volatile FileObject linkDestination
private final java.util.concurrent.atomic.AtomicBoolean inRefresh
protected FtpFileObject(AbstractFileName name, FtpFileSystem fileSystem, FileName rootName) throws FileSystemException
FileSystemException
private org.apache.commons.net.ftp.FTPFile getChildFile(java.lang.String name, boolean flush) throws java.io.IOException
name
- the file name in its native form ie. without uri stuff (%nn)flush
- recreate children cachejava.io.IOException
private void doGetChildren() throws java.io.IOException
java.io.IOException
protected void doAttach() throws java.io.IOException
doAttach
in class AbstractFileObject<FtpFileSystem>
java.io.IOException
private void getInfo(boolean flush) throws java.io.IOException
java.io.IOException
public void refresh() throws FileSystemException
AbstractFileObject
refresh
in interface FileObject
refresh
in class AbstractFileObject<FtpFileSystem>
FileSystemException
- if an error occurs.protected void doDetach()
doDetach
in class AbstractFileObject<FtpFileSystem>
protected void onChildrenChanged(FileName child, FileType newType)
onChildrenChanged
in class AbstractFileObject<FtpFileSystem>
child
- The name of the child that changed.newType
- The type of the file.protected void onChange() throws java.io.IOException
onChange
in class AbstractFileObject<FtpFileSystem>
java.io.IOException
protected FileType doGetType() throws java.lang.Exception
doGetType
in class AbstractFileObject<FtpFileSystem>
java.lang.Exception
- if an error occurs.private FileObject getLinkDestination() throws FileSystemException
FileSystemException
protected FileObject[] doListChildrenResolved() throws java.lang.Exception
AbstractFileObject
Is only called if AbstractFileObject.doGetType()
returns FileType.FOLDER
.
The return value of this method is cached, so the implementation can be expensive.
Other than doListChildren
you could return FileObject's to e.g. reinitialize the type of the file.
(Introduced for Webdav: "permission denied on resource" during getType())
doListChildrenResolved
in class AbstractFileObject<FtpFileSystem>
java.lang.Exception
- if an error occurs.public FileObject[] getChildren() throws FileSystemException
getChildren
in interface FileObject
getChildren
in class AbstractFileObject<FtpFileSystem>
FileSystemException
- If there was a problem listing childrenAbstractFileObject.getChildren()
protected java.lang.String[] doListChildren() throws java.lang.Exception
doListChildren
in class AbstractFileObject<FtpFileSystem>
java.lang.Exception
- if an error occurs.protected void doDelete() throws java.lang.Exception
doDelete
in class AbstractFileObject<FtpFileSystem>
java.lang.Exception
- if an error occurs.protected void doRename(FileObject newFile) throws java.lang.Exception
doRename
in class AbstractFileObject<FtpFileSystem>
newFile
- A FileObject with the new file name.java.lang.Exception
- if an error occurs.protected void doCreateFolder() throws java.lang.Exception
doCreateFolder
in class AbstractFileObject<FtpFileSystem>
java.lang.Exception
- if an error occurs.protected long doGetContentSize() throws java.lang.Exception
doGetContentSize
in class AbstractFileObject<FtpFileSystem>
java.lang.Exception
- if an error occurs.protected long doGetLastModifiedTime() throws java.lang.Exception
doGetLastModifiedTime
in class AbstractFileObject<FtpFileSystem>
java.lang.Exception
- if an error occurs.AbstractFileObject.doGetLastModifiedTime()
protected java.io.InputStream doGetInputStream() throws java.lang.Exception
doGetInputStream
in class AbstractFileObject<FtpFileSystem>
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<FtpFileSystem>
mode
- The mode to access the file.java.lang.Exception
- if an error occurs.protected java.io.OutputStream doGetOutputStream(boolean bAppend) throws java.lang.Exception
doGetOutputStream
in class AbstractFileObject<FtpFileSystem>
bAppend
- true if the file should be appended to, false if it should be overwritten.java.lang.Exception
- if an error occurs.java.lang.String getRelPath()
private long getTimestamp()
private boolean isCircular(FileObject linkDest) throws FileSystemException
FileSystemException
FtpFileObject.FtpInputStream getInputStream(long filePointer) throws java.io.IOException
java.io.IOException