Class FileStore
- java.lang.Object
-
- org.eclipse.core.runtime.PlatformObject
-
- org.eclipse.core.filesystem.provider.FileStore
-
- All Implemented Interfaces:
IFileStore
,IAdaptable
public abstract class FileStore extends PlatformObject implements IFileStore
The abstract superclass of allIFileStore
implementations. All file stores must subclass this base class, implementing all abstract methods according to their specification in theIFileStore
API.Clients may subclass this class.
- Since:
- org.eclipse.core.filesystem 1.0
-
-
Field Summary
Fields Modifier and Type Field Description protected static IFileInfo[]
EMPTY_FILE_INFO_ARRAY
A file info array of size zero that can be used as a return value for methods that return IFileInfo[] to avoid creating garbage objects.protected static String[]
EMPTY_STRING_ARRAY
A string array of size zero that can be used as a return value for methods that return String[] to avoid creating garbage objects.
-
Constructor Summary
Constructors Constructor Description FileStore()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description IFileInfo[]
childInfos(int options, IProgressMonitor monitor)
The default implementation ofIFileStore.childInfos(int, IProgressMonitor)
.abstract String[]
childNames(int options, IProgressMonitor monitor)
Returns the names of the files and directories contained within this store.IFileStore[]
childStores(int options, IProgressMonitor monitor)
The default implementation ofIFileStore.childStores(int, IProgressMonitor)
.void
copy(IFileStore destination, int options, IProgressMonitor monitor)
The default implementation ofIFileStore.copy(IFileStore, int, IProgressMonitor)
.protected void
copyDirectory(IFileInfo sourceInfo, IFileStore destination, int options, IProgressMonitor monitor)
Recursively copies a directory as specified byIFileStore.copy(IFileStore, int, IProgressMonitor)
.protected void
copyFile(IFileInfo sourceInfo, IFileStore destination, int options, IProgressMonitor monitor)
Copies a file as specified byIFileStore.copy(IFileStore, int, IProgressMonitor)
.void
delete(int options, IProgressMonitor monitor)
The default implementation ofIFileStore.delete(int, IProgressMonitor)
.boolean
equals(Object obj)
This implementation ofObject.equals(Object)
defines equality based on the file store's URI.IFileInfo
fetchInfo()
The default implementation ofIFileStore.fetchInfo()
.abstract IFileInfo
fetchInfo(int options, IProgressMonitor monitor)
Fetches and returns information about this file from the underlying file system.abstract IFileStore
getChild(String name)
Returns a child store with the provided name whose parent is this store.IFileStore
getChild(IPath path)
Deprecated.usegetFileStore(IPath)
insteadIFileStore
getFileStore(IPath path)
The default implementation ofIFileStore.getFileStore(IPath)
Subclasses may override.IFileSystem
getFileSystem()
The default implementation ofIFileStore.getFileSystem()
.abstract String
getName()
Returns the name of this store.abstract IFileStore
getParent()
Returns the parent of this store.int
hashCode()
This implementation ofObject.hashCode()
uses a definition of equality based on equality of the file store's URI.boolean
isParentOf(IFileStore other)
The default implementation ofIFileStore.isParentOf(IFileStore)
.IFileStore
mkdir(int options, IProgressMonitor monitor)
The default implementation ofIFileStore.mkdir(int, IProgressMonitor)
.void
move(IFileStore destination, int options, IProgressMonitor monitor)
The default implementation ofIFileStore.move(IFileStore, int, IProgressMonitor)
.abstract InputStream
openInputStream(int options, IProgressMonitor monitor)
Returns an open input stream on the contents of this file.OutputStream
openOutputStream(int options, IProgressMonitor monitor)
The default implementation ofIFileStore.openOutputStream(int, IProgressMonitor)
.void
putInfo(IFileInfo info, int options, IProgressMonitor monitor)
The default implementation ofIFileStore.putInfo(IFileInfo, int, IProgressMonitor)
.File
toLocalFile(int options, IProgressMonitor monitor)
The default implementation ofIFileStore.toLocalFile(int, IProgressMonitor)
.String
toString()
Default implementation ofIFileStore.toString()
.abstract URI
toURI()
Returns a URI instance corresponding to this store.-
Methods inherited from class org.eclipse.core.runtime.PlatformObject
getAdapter
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.core.runtime.IAdaptable
getAdapter
-
Methods inherited from interface org.eclipse.core.filesystem.IFileStore
compareTo
-
-
-
-
Field Detail
-
EMPTY_FILE_INFO_ARRAY
protected static final IFileInfo[] EMPTY_FILE_INFO_ARRAY
A file info array of size zero that can be used as a return value for methods that return IFileInfo[] to avoid creating garbage objects.
-
EMPTY_STRING_ARRAY
protected static final String[] EMPTY_STRING_ARRAY
A string array of size zero that can be used as a return value for methods that return String[] to avoid creating garbage objects.
-
-
Method Detail
-
childInfos
public IFileInfo[] childInfos(int options, IProgressMonitor monitor) throws CoreException
The default implementation ofIFileStore.childInfos(int, IProgressMonitor)
. Subclasses should override this method where a more efficient implementation is possible. This default implementation callsfetchInfo()
on each child, which will result in a file system call for each child.- Specified by:
childInfos
in interfaceIFileStore
- Parameters:
options
- bit-wise or of option flag constants (currently onlyEFS.NONE
is applicable).monitor
- a progress monitor, ornull
if progress reporting and cancellation are not desired- Returns:
- An array of information about the children of this store, or an empty array if this store has no children.
- Throws:
CoreException
- if this method fails. Reasons include:- This store does not exist.
- See Also:
IFileTree.getChildInfos(IFileStore)
-
childNames
public abstract String[] childNames(int options, IProgressMonitor monitor) throws CoreException
Description copied from interface:IFileStore
Returns the names of the files and directories contained within this store.- Specified by:
childNames
in interfaceIFileStore
- Parameters:
options
- bit-wise or of option flag constants (currently onlyEFS.NONE
is applicable).monitor
- a progress monitor, ornull
if progress reporting and cancellation are not desired- Returns:
- The names of the children of this store, or an empty array if this store has no children.
- Throws:
CoreException
- if this method fails. Reasons include:- This store does not exist.
-
childStores
public IFileStore[] childStores(int options, IProgressMonitor monitor) throws CoreException
The default implementation ofIFileStore.childStores(int, IProgressMonitor)
. Subclasses may override.- Specified by:
childStores
in interfaceIFileStore
- Parameters:
options
- bit-wise or of option flag constants (currently onlyEFS.NONE
is applicable).monitor
- a progress monitor, ornull
if progress reporting and cancellation are not desired- Returns:
- The children of this store, or an empty array if this store has no children.
- Throws:
CoreException
- if this method fails. Reasons include:- This store does not exist.
- See Also:
IFileTree.getChildStores(IFileStore)
-
copy
public void copy(IFileStore destination, int options, IProgressMonitor monitor) throws CoreException
The default implementation ofIFileStore.copy(IFileStore, int, IProgressMonitor)
. This implementation performs a copy by using other primitive methods. Subclasses may override this method.- Specified by:
copy
in interfaceIFileStore
- Parameters:
destination
- The destination of the copy.options
- bit-wise or of option flag constants (EFS.OVERWRITE
orEFS.SHALLOW
).monitor
- a progress monitor, ornull
if progress reporting and cancellation are not desired- Throws:
CoreException
- if this method fails. Reasons include:- This store does not exist.
- The parent of the destination file store does not exist.
- The
OVERWRITE
flag is not specified and a file of the same name already exists at the copy destination. - A file is being copied, but a directory of the same name already exists at the copy destination.
- A directory is being copied, but a file of the same name already exists at the copy destination.
-
copyDirectory
protected void copyDirectory(IFileInfo sourceInfo, IFileStore destination, int options, IProgressMonitor monitor) throws CoreException
Recursively copies a directory as specified byIFileStore.copy(IFileStore, int, IProgressMonitor)
.- Parameters:
sourceInfo
- The current file information for the source of the movedestination
- The destination of the copy.options
- bit-wise or of option flag constants (EFS.OVERWRITE
orEFS.SHALLOW
).monitor
- a progress monitor, ornull
if progress reporting and cancellation are not desired- Throws:
CoreException
- if this method fails. Reasons include:- This store does not exist.
- A file of the same name already exists at the copy destination.
-
copyFile
protected void copyFile(IFileInfo sourceInfo, IFileStore destination, int options, IProgressMonitor monitor) throws CoreException
Copies a file as specified byIFileStore.copy(IFileStore, int, IProgressMonitor)
.- Parameters:
sourceInfo
- The current file information for the source of the movedestination
- The destination of the copy.options
- bit-wise or of option flag constants (EFS.OVERWRITE
orEFS.SHALLOW
).monitor
- a progress monitor, ornull
if progress reporting and cancellation are not desired- Throws:
CoreException
- if this method fails. Reasons include:- This store does not exist.
- The
OVERWRITE
flag is not specified and a file of the same name already exists at the copy destination. - A directory of the same name already exists at the copy destination.
-
delete
public void delete(int options, IProgressMonitor monitor) throws CoreException
The default implementation ofIFileStore.delete(int, IProgressMonitor)
. This implementation always throws an exception indicating that deletion is not supported by this file system. This method should be overridden for all file systems on which deletion is supported.- Specified by:
delete
in interfaceIFileStore
- Parameters:
options
- bit-wise or of option flag constantsmonitor
- a progress monitor, ornull
if progress reporting and cancellation are not desired- Throws:
CoreException
- if this method fails. Reasons include:- Files or directories could not be deleted.
- See Also:
EFS.ATTRIBUTE_SYMLINK
-
equals
public boolean equals(Object obj)
This implementation ofObject.equals(Object)
defines equality based on the file store's URI. Subclasses should override this method to returntrue
if and only if the two file stores represent the same resource in the backing file system. Issues to watch out for include whether the file system is case-sensitive, and whether trailing slashes are considered significant. Subclasses that override this method should also overridehashCode()
.
-
fetchInfo
public IFileInfo fetchInfo()
The default implementation ofIFileStore.fetchInfo()
. This implementation forwards toIFileStore.fetchInfo(int, IProgressMonitor)
. Subclasses may override this method.- Specified by:
fetchInfo
in interfaceIFileStore
- Returns:
- A structure containing information about this file.
- See Also:
IFileStore.fetchInfo(int, IProgressMonitor)
-
fetchInfo
public abstract IFileInfo fetchInfo(int options, IProgressMonitor monitor) throws CoreException
Description copied from interface:IFileStore
Fetches and returns information about this file from the underlying file system.This method succeeds regardless of whether a corresponding file currently exists in the underlying file system. In the case of a non-existent file, the returned info will include the file's name and will return
false
when IFileInfo#exists() is called, but all other information will assume default values.- Specified by:
fetchInfo
in interfaceIFileStore
- Parameters:
options
- bit-wise or of option flag constants (currently onlyEFS.NONE
is applicable).monitor
- a progress monitor, ornull
if progress reporting and cancellation are not desired- Returns:
- A structure containing information about this file.
- Throws:
CoreException
- if this method fails. Reasons include:- Problems occurred while contacting the file system.
- See Also:
IFileTree.getFileInfo(IFileStore)
-
getChild
@Deprecated public IFileStore getChild(IPath path)
Deprecated.usegetFileStore(IPath)
insteadDescription copied from interface:IFileStore
Returns a child of this store as specified by the provided path. The path is treated as relative to this store. This is equivalent toIFileStore result = this; for (int i = 0; i < path.segmentCount(); i++) { result = result.getChild(path.segment(i)); return result;
This is a handle-only method; a child is provided regardless of whether this store or the child store exists, or whether this store represents a directory or not.
The provided path must not contain segments that are self references (".") or parent references ("..").
- Specified by:
getChild
in interfaceIFileStore
- Parameters:
path
- The path of the child store to return- Returns:
- A child file store.
-
getFileStore
public IFileStore getFileStore(IPath path)
The default implementation ofIFileStore.getFileStore(IPath)
Subclasses may override.- Specified by:
getFileStore
in interfaceIFileStore
- Parameters:
path
- the path of the member store- Returns:
- the member store
- Since:
- org.eclipse.core.filesystem 1.2
-
getChild
public abstract IFileStore getChild(String name)
Description copied from interface:IFileStore
Returns a child store with the provided name whose parent is this store. This is a handle-only method; a child is provided regardless of whether this store or the child store exists, or whether this store represents a directory or not.- Specified by:
getChild
in interfaceIFileStore
- Parameters:
name
- The name of the child store to return- Returns:
- A child file store.
-
getFileSystem
public IFileSystem getFileSystem()
The default implementation ofIFileStore.getFileSystem()
. Subclasses may override.- Specified by:
getFileSystem
in interfaceIFileStore
- Returns:
- The file system this store belongs to.
-
getName
public abstract String getName()
Description copied from interface:IFileStore
Returns the name of this store. This is a handle-only method; the name is returned regardless of whether this store exists.Note that when dealing with case-insensitive file systems, this name may differ in case from the name of the corresponding file in the file system. To obtain the exact name used in the file system, use
fetchInfo().getName()
.- Specified by:
getName
in interfaceIFileStore
- Returns:
- The name of this store
-
getParent
public abstract IFileStore getParent()
Description copied from interface:IFileStore
Returns the parent of this store. This is a handle only method; the parent is returned regardless of whether this store or the parent store exists. This method returnsnull
when this store represents the root directory of a file system.- Specified by:
getParent
in interfaceIFileStore
- Returns:
- The parent store, or
null
if this store is the root of a file system.
-
hashCode
public int hashCode()
This implementation ofObject.hashCode()
uses a definition of equality based on equality of the file store's URI. Subclasses that overrideequals(Object)
should also override this method to ensure the contract ofObject.hashCode()
is honored.
-
isParentOf
public boolean isParentOf(IFileStore other)
The default implementation ofIFileStore.isParentOf(IFileStore)
. This implementation performs parent calculation using other primitive methods. Subclasses may override this method.- Specified by:
isParentOf
in interfaceIFileStore
- Parameters:
other
- The store to test for parentage.- Returns:
true
if this store is a parent of the provided store, andfalse
otherwise.
-
mkdir
public IFileStore mkdir(int options, IProgressMonitor monitor) throws CoreException
The default implementation ofIFileStore.mkdir(int, IProgressMonitor)
. This implementation always throws an exception indicating that this file system is read only. This method should be overridden for all writable file systems.- Specified by:
mkdir
in interfaceIFileStore
- Parameters:
options
- bit-wise or of option flag constantsmonitor
- a progress monitor, ornull
if progress reporting and cancellation are not desired- Returns:
- This directory
- Throws:
CoreException
- if this method fails. Reasons include:- The directory could not be created
- A file already exists with this name that is not a directory
- The
EFS.SHALLOW
option flag was specified and the parent of this directory does not exist.
-
move
public void move(IFileStore destination, int options, IProgressMonitor monitor) throws CoreException
The default implementation ofIFileStore.move(IFileStore, int, IProgressMonitor)
. This implementation performs a move by using other primitive methods. Subclasses may override this method.- Specified by:
move
in interfaceIFileStore
- Parameters:
destination
- The destination of the move.options
- bit-wise or of option flag constants (EFS.OVERWRITE
).monitor
- a progress monitor, ornull
if progress reporting and cancellation are not desired- Throws:
CoreException
- if this method fails. Reasons include:- This store does not exist.
- The parent of the destination file store does not exist.
- The
EFS.OVERWRITE
flag is not specified and a file of the same name already exists at the destination.
-
openInputStream
public abstract InputStream openInputStream(int options, IProgressMonitor monitor) throws CoreException
Description copied from interface:IFileStore
Returns an open input stream on the contents of this file. The number of concurrently open streams depends on the implementation and can be limited. The caller is responsible for closing the provided stream when it is no longer needed.The returned stream is not guaranteed to be buffered efficiently. When reading large blocks of data from the stream, a
BufferedInputStream
wrapper should be used, or some other form of content buffering.It depends on the implementation how the limit of concurrently opened streams is handled.
CoreException
may be thrown, when the limit is exceeded.- Specified by:
openInputStream
in interfaceIFileStore
- Parameters:
options
- bit-wise or of option flag constants (currently onlyEFS.NONE
is applicable).monitor
- a progress monitor, ornull
if progress reporting and cancellation are not desired- Returns:
- An input stream on the contents of this file.
- Throws:
CoreException
- if this method fails. The status code associated with exception reflects the cause of the failure. Reasons include:EFS.ERROR_NOT_EXISTS
- This store does not exist.EFS.ERROR_WRONG_TYPE
- This store represents a directory.EFS.ERROR_READ
- The limit of concurrently opened streams has been exceeded.
-
openOutputStream
public OutputStream openOutputStream(int options, IProgressMonitor monitor) throws CoreException
The default implementation ofIFileStore.openOutputStream(int, IProgressMonitor)
. This implementation always throws an exception indicating that this file system is read only. This method should be overridden for all writable file systems.Implementations of this method are responsible for ensuring that the exact sequence of bytes written to the output stream are returned on a subsequent call to
openInputStream(int, IProgressMonitor)
, unless there have been intervening modifications to the file in the file system. For example, the implementation of this method must not perform conversion of line terminator characters on text data in the stream.- Specified by:
openOutputStream
in interfaceIFileStore
- Parameters:
options
- bit-wise or of option flag constantsmonitor
- a progress monitor, ornull
if progress reporting and cancellation are not desired- Returns:
- An output stream on the contents of this file.
- Throws:
CoreException
- if this method fails. The status code associated with exception reflects the cause of the failure. Reasons include:EFS.ERROR_NOT_EXISTS
- This store does not exist.EFS.ERROR_WRONG_TYPE
- This store represents a directory.EFS.ERROR_READ
- The limit of concurrently opened streams has been exceeded.
-
putInfo
public void putInfo(IFileInfo info, int options, IProgressMonitor monitor) throws CoreException
The default implementation ofIFileStore.putInfo(IFileInfo, int, IProgressMonitor)
. This implementation always throws an exception indicating that this file system is read only. This method should be overridden for all writable file systems.- Specified by:
putInfo
in interfaceIFileStore
- Parameters:
options
- bit-wise or of option flag constantsmonitor
- a progress monitor, ornull
if progress reporting and cancellation are not desiredinfo
- The file information instance containing the values to set.- Throws:
CoreException
- if this method fails. Reasons include:- This store does not exist.
- See Also:
EFS.createFileInfo()
-
toLocalFile
public File toLocalFile(int options, IProgressMonitor monitor) throws CoreException
The default implementation ofIFileStore.toLocalFile(int, IProgressMonitor)
. When theEFS.CACHE
option is specified, this method returns a cached copy of this store in the local file system, ornull
if this store does not exist.- Specified by:
toLocalFile
in interfaceIFileStore
- Parameters:
options
- bit-wise or of option flag constants ( onlyEFS.CACHE
applies).monitor
- a progress monitor, ornull
if progress reporting and cancellation are not desired- Returns:
- A local file with the same state as this file or
null
ifEFS.CACHE
is not specified and this is not a local file. - Throws:
CoreException
- if this method fails. Reasons include:- A corresponding file could not be created in the local file system.
- See Also:
IFileSystem.fromLocalFile(java.io.File)
-
toString
public String toString()
Default implementation ofIFileStore.toString()
. This default implementation returns a string equal to the one returned by #toURI().toString(). Subclasses may override to provide a more specific string representation of this store.- Specified by:
toString
in interfaceIFileStore
- Overrides:
toString
in classObject
- Returns:
- A string representation of this store.
-
toURI
public abstract URI toURI()
Description copied from interface:IFileStore
Returns a URI instance corresponding to this store. The resulting URI, when passed toEFS.getStore(URI)
, will return a store equal to this instance.- Specified by:
toURI
in interfaceIFileStore
- Returns:
- A URI corresponding to this store.
- See Also:
EFS.getStore(URI)
-
-