Class FtpFileObject
java.lang.Object
org.apache.commons.vfs2.provider.AbstractFileObject<FtpFileSystem>
org.apache.commons.vfs2.provider.ftp.FtpFileObject
- All Implemented Interfaces:
Closeable, AutoCloseable, Comparable<FileObject>, Iterable<FileObject>, FileObject
An FTP file.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) classAn InputStream that monitors for end-of-file.private classAn OutputStream that monitors for end-of-file. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final longprivate org.apache.commons.net.ftp.FTPFileprivate final AtomicBooleanprivate FileObjectprivate static final org.apache.commons.logging.Logprivate booleanprivate final Stringprivate static final org.apache.commons.net.ftp.FTPFileFields inherited from class AbstractFileObject
DEFAULT_BUFFER_SIZEFields inherited from interface FileObject
EMPTY_ARRAY -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedFtpFileObject(AbstractFileName name, FtpFileSystem fileSystem, FileName rootName) -
Method Summary
Modifier and TypeMethodDescriptionprotected voiddoAttach()Attaches this file object to its file resource.protected voidCreates this file as a folder.protected voiddoDelete()Deletes the file.protected voiddoDetach()Detaches this file object from its file resource.private voidFetches the children of this file, if not already cached.protected longReturns the size of the file content (in bytes).protected InputStreamdoGetInputStream(int bufferSize) Creates an input stream to read the file content from.protected longGet the last modified time on an FTP fileprotected OutputStreamdoGetOutputStream(boolean bAppend) Creates an output stream to write the file content to.protected RandomAccessContentCreates access to the file for random i/o.protected FileTypeDetermines the type of the file, returns null if the file does not exist.protected String[]Lists the children of the file.protected FileObject[]Lists the children of this file.protected voiddoRename(FileObject newFile) Renames the fileprivate org.apache.commons.net.ftp.FTPFilegetChildFile(String name, boolean flush) Called by child file objects, to locate their FTP file info.Returns the file's list of children.(package private) FtpFileObject.FtpInputStreamgetInputStream(long filePointer) private FileObject(package private) Stringprivate longftpFile is not null.private booleanisCircular(FileObject linkDest) This is an over simplistic implementation for VFS-437.protected voidonChange()Called when the type or content of this file changes.protected voidonChildrenChanged(FileName child, FileType newType) Called when the children of this file change.voidrefresh()This will prepare the fileObject to get resynchronized with the underlying file system if required.private voidsetFTPFile(boolean flush) Sets the internal FTPFile for this instance.Methods inherited from class AbstractFileObject
canRenameTo, childrenChanged, close, compareTo, copyFrom, createFile, createFolder, delete, delete, deleteAll, doCreateFileContent, doGetAttributes, doGetCertificates, doGetInputStream, doIsExecutable, doIsHidden, doIsReadable, doIsSameFile, doIsSymbolicLink, doIsWriteable, doRemoveAttribute, doSetAttribute, doSetExecutable, doSetLastModifiedTime, doSetReadable, doSetWritable, endOutput, exists, finalize, findFiles, findFiles, getAbstractFileSystem, getChild, getContent, getFileContentInfoFactory, getFileOperations, getFileSystem, getInputStream, 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, toStringMethods inherited from class Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface FileObject
getPath, getURIMethods inherited from interface Iterable
forEach, spliterator
-
Field Details
-
DEFAULT_TIMESTAMP
private static final long DEFAULT_TIMESTAMP- See Also:
-
EMPTY_FTP_FILE_MAP
-
UNKNOWN
private static final org.apache.commons.net.ftp.FTPFile UNKNOWN -
log
private static final org.apache.commons.logging.Log log -
mdtmSet
private volatile boolean mdtmSet -
relPath
-
ftpFile
private volatile org.apache.commons.net.ftp.FTPFile ftpFile -
childMap
-
linkDestination
-
inRefresh
-
-
Constructor Details
-
FtpFileObject
protected FtpFileObject(AbstractFileName name, FtpFileSystem fileSystem, FileName rootName) throws FileSystemException - Throws:
FileSystemException
-
-
Method Details
-
doAttach
Attaches this file object to its file resource.- Overrides:
doAttachin classAbstractFileObject<FtpFileSystem>- Throws:
IOException
-
doCreateFolder
Creates this file as a folder.- Overrides:
doCreateFolderin classAbstractFileObject<FtpFileSystem>- Throws:
Exception- if an error occurs.
-
doDelete
Deletes the file.- Overrides:
doDeletein classAbstractFileObject<FtpFileSystem>- Throws:
Exception- if an error occurs.
-
doDetach
protected void doDetach()Detaches this file object from its file resource.- Overrides:
doDetachin classAbstractFileObject<FtpFileSystem>
-
doGetChildren
Fetches the children of this file, if not already cached.- Throws:
IOException
-
doGetContentSize
Returns the size of the file content (in bytes).- Specified by:
doGetContentSizein classAbstractFileObject<FtpFileSystem>- Returns:
- The size of the file in bytes.
- Throws:
Exception- if an error occurs.
-
doGetInputStream
Creates an input stream to read the file content from.- Overrides:
doGetInputStreamin classAbstractFileObject<FtpFileSystem>- Parameters:
bufferSize- Buffer size hint.- Returns:
- An InputStream to read the file content.
- Throws:
Exception- if an error occurs.
-
doGetLastModifiedTime
Get the last modified time on an FTP file- Overrides:
doGetLastModifiedTimein classAbstractFileObject<FtpFileSystem>- Returns:
- The last modification time.
- Throws:
Exception- if an error occurs.- See Also:
-
doGetOutputStream
Creates an output stream to write the file content to.- Overrides:
doGetOutputStreamin classAbstractFileObject<FtpFileSystem>- Parameters:
bAppend- true if the file should be appended to, false if it should be overwritten.- Returns:
- An OutputStream to write to the file.
- Throws:
Exception- if an error occurs.
-
doGetRandomAccessContent
Description copied from class:AbstractFileObjectCreates access to the file for random i/o. Is only called ifAbstractFileObject.doGetType()returnsFileType.FILE.It is guaranteed that there are no open output streams for this file when this method is called.
- Overrides:
doGetRandomAccessContentin classAbstractFileObject<FtpFileSystem>- Parameters:
mode- The mode to access the file.- Returns:
- The RandomAccessContext.
- Throws:
Exception- if an error occurs.
-
doGetType
Determines the type of the file, returns null if the file does not exist.- Specified by:
doGetTypein classAbstractFileObject<FtpFileSystem>- Returns:
- the type of the file.
- Throws:
Exception- if an error occurs.
-
doListChildren
Lists the children of the file.- Specified by:
doListChildrenin classAbstractFileObject<FtpFileSystem>- Returns:
- a possible empty String array if the file is a directory or null or an exception if the file is not a directory or can't be read.
- Throws:
Exception- if an error occurs.
-
doListChildrenResolved
Description copied from class:AbstractFileObjectLists the children of this file.Is only called if
AbstractFileObject.doGetType()returnsFileType.FOLDER.The return value of this method is cached, so the implementation can be expensive. Other than
doListChildrenyou could return FileObject's to e.g. reinitialize the type of the file.(Introduced for Webdav: "permission denied on resource" during getType())
- Overrides:
doListChildrenResolvedin classAbstractFileObject<FtpFileSystem>- Returns:
- The children of this FileObject.
- Throws:
Exception- if an error occurs.
-
doRename
Renames the file- Overrides:
doRenamein classAbstractFileObject<FtpFileSystem>- Parameters:
newFile- A FileObject with the new file name.- Throws:
Exception- if an error occurs.
-
getChildFile
private org.apache.commons.net.ftp.FTPFile getChildFile(String name, boolean flush) throws IOException Called by child file objects, to locate their FTP file info.- Parameters:
name- the file name in its native form ie. without URI stuff (%nn)flush- recreate children cache- Throws:
IOException
-
getChildren
Returns the file's list of children.- Specified by:
getChildrenin interfaceFileObject- Overrides:
getChildrenin classAbstractFileObject<FtpFileSystem>- Returns:
- The list of children
- Throws:
FileSystemException- If there was a problem listing children- Since:
- 2.0
- See Also:
-
getInputStream
- Throws:
IOException
-
getLinkDestination
- Throws:
FileSystemException
-
getRelPath
String getRelPath() -
getTimestampMillis
-
isCircular
This is an over simplistic implementation for VFS-437.- Throws:
FileSystemException
-
onChange
Called when the type or content of this file changes.- Overrides:
onChangein classAbstractFileObject<FtpFileSystem>- Throws:
IOException
-
onChildrenChanged
Called when the children of this file change.- Overrides:
onChildrenChangedin classAbstractFileObject<FtpFileSystem>- Parameters:
child- The name of the child that changed.newType- The type of the file.
-
refresh
Description copied from class:AbstractFileObjectThis will prepare the fileObject to get resynchronized with the underlying file system if required.- Specified by:
refreshin interfaceFileObject- Overrides:
refreshin classAbstractFileObject<FtpFileSystem>- Throws:
FileSystemException- if an error occurs.
-
setFTPFile
Sets the internal FTPFile for this instance.- Throws:
IOException
-