Top Description Fields Methods
org.apache.derby.io

public Interface StorageFile

Known Direct Implementers
org.apache.derby.impl.io.DirFile, org.apache.derby.impl.io.InputStreamFile, org.apache.derby.impl.io.vfmem.VirtualFile
Imports
java.io.InputStream, .OutputStream, .FileNotFoundException, .IOException, org.apache.derby.shared.common.error.StandardException

This interface abstracts file naming. Any method in this interface that also appears in the java.io.File class should behave as the java.io.File method does.

When used by the database engine all files will be under either the database directory, specified by the databaseName argument of the StorageFactory.init method, or under the temporary file directory returned by the StorageFactory.getTempDir method. All relative path names are relative to the database directory.

The database engine will call this interface's methods from its own privilege blocks.

Different threads may operate on the same underlying file at the same time, either through the same or different StorageFile objects. The StiFile implementation must be capable of handling this.

See Also
java.io.File

Field Summary

Modifier and TypeField and Description
public static final int
public static final int
public static final int

Method Summary

Modifier and TypeMethod and Description
public boolean

Returns:

true if the file exists and is writable, false if not.
canWrite
()

Determine whether the named file is writable.

public boolean

Returns:

true if this thread's invocation of createNewFile successfully created the named file; false if not, i.e. false if the named file already exists or if another concurrent thread created it.
createNewFile
()

If the named file does not already exist then create it as an empty normal file.

public boolean

Returns:

true if the named file or directory is successfully deleted, false if not
delete
()

Deletes the named file or empty directory.

public boolean

Returns:

true if the named file or directory is successfully deleted, false if not
deleteAll
()

Deletes the named file and, if it is a directory, all the files and directories it contains.

public boolean

Returns:

true if the named file exists, false if not.
exists
()

Tests whether the named file exists.

public String

Returns:

The pathname as a string.
getCanonicalPath
()

Converts this StorageFile into a canonical pathname string.

public int

Returns:

EXCLUSIVE_FILE_LOCK_NOT_AVAILABLE if the lock cannot be acquired because it is already held.
EXCLUSIVE_FILE_LOCK if the lock was successfully acquired.
NO_FILE_LOCK_SUPPORT if the system does not support exclusive locks.
getExclusiveFileLock
()

Get an exclusive lock with this name.

public InputStream

Returns:

an input stream suitable for reading from the file.
getInputStream
()

Creates an input stream from a file name.

public String

Returns:

The last segment in the path name, "" if the path name sequence is empty.
getName
()

public OutputStream

Returns:

an output stream suitable for writing to the file.
getOutputStream
()

Creates an output stream from a file name.

public OutputStream

Returns:

an output stream suitable for writing to the file.
getOutputStream
(boolean
If true then data will be appended to the end of the file, if it already exists. If false and a normal file already exists with this name the file will first be truncated to zero length.
append
)

Creates an output stream from a file name.

public StorageFile

Returns:

An StorageFile denoting the parent directory of this StorageFile, if it has a parent, null if it does not have a parent.
getParentDir
()

Get the name of the parent directory if this name includes a parent.

public String

Returns:

The pathname as a string.
getPath
()

Converts this StorageFile into a pathname string.

public StorageRandomAccessFile

Returns:

an object that can be used for random access to the file.
getRandomAccessFile
(String
"r", "rw", "rws", or "rwd". The "rws" and "rwd" modes specify that the data is to be written to persistent store, consistent with the java.io.RandomAccessFile class ("synchronized" with the persistent storage, in the file system meaning of the word "synchronized"). However the implementation is not required to implement the "rws" or "rwd" modes. If the "rws" andr "rwd" modes are supported then the supportsRws() method of the StorageFactory returns true. If supportsRws() returns false then the implementation may treat "rws" and "rwd" as "rw". It is up to the user of this interface to call the StorageRandomAccessFile.sync method if necessary. However, if the "rws" or "rwd" modes are supported and the RandomAccessFile was opened in "rws" or "rwd" mode then the implementation of StorageRandomAccessFile.sync need not do anything.
mode
)

Get a random access file.

public boolean

Returns:

true if named file exists and is a directory, false if not. The return value is undefined if the storage is read-only.
isDirectory
()

Tests whether the named file is a directory, or not.

public void
limitAccessToOwner()

Use when creating a new file.

public String[]

Returns:

An array of the names of the files and directories in this directory denoted by this abstract pathname. The returned array will have length 0 if this directory is empty. Returns null if this StorageFile is not a directory, or if an I/O error occurs. The return value is undefined if the database is read-only.
list
()

Get the names of all files and sub-directories in the directory named by this path name.

public boolean

Returns:

true if the directory was created; false if not.
mkdir
()

Creates the named directory.

public boolean

Returns:

true if the directory was created, false if not
mkdirs
()

Creates the named directory, and all nonexistent parent directories.

public void
releaseExclusiveFileLock()

Release the resource associated with an earlier acquired exclusive lock releaseExclusiveFileLock() may delete the file

public boolean

Returns:

true if the rename succeeded, false if not.
renameTo
(StorageFile
the new name.
newName
)

Rename the file denoted by this name.

public boolean

Returns:

true if the named file or directory was made read-only, or it already was read-only; false if not.
setReadOnly
()

Make the named file or directory read-only.

Field Detail

EXCLUSIVE_FILE_LOCKback to summary
public static final int EXCLUSIVE_FILE_LOCK
EXCLUSIVE_FILE_LOCK_NOT_AVAILABLEback to summary
public static final int EXCLUSIVE_FILE_LOCK_NOT_AVAILABLE
NO_FILE_LOCK_SUPPORTback to summary
public static final int NO_FILE_LOCK_SUPPORT

Method Detail

canWriteback to summary
public boolean canWrite()

Determine whether the named file is writable.

Returns:boolean

true if the file exists and is writable, false if not.

createNewFileback to summary
public boolean createNewFile() throws IOException

If the named file does not already exist then create it as an empty normal file. The implementation must synchronize with other threads accessing the same file (in the same or a different process). If two threads both attempt to create a file with the same name at the same time then at most one should succeed.

Returns:boolean

true if this thread's invocation of createNewFile successfully created the named file; false if not, i.e. false if the named file already exists or if another concurrent thread created it.

Exceptions
IOException:
- If the directory does not exist or some other I/O error occurred
deleteback to summary
public boolean delete()

Deletes the named file or empty directory. This method does not delete non-empty directories.

Returns:boolean

true if the named file or directory is successfully deleted, false if not

deleteAllback to summary
public boolean deleteAll()

Deletes the named file and, if it is a directory, all the files and directories it contains.

Returns:boolean

true if the named file or directory is successfully deleted, false if not

existsback to summary
public boolean exists()

Tests whether the named file exists.

Returns:boolean

true if the named file exists, false if not.

getCanonicalPathback to summary
public String getCanonicalPath() throws IOException

Converts this StorageFile into a canonical pathname string. The form of the canonical path is system dependent.

Returns:String

The pathname as a string.

Exceptions
IOException:
if an I/O error occurred while finding the canonical name
getExclusiveFileLockback to summary
public int getExclusiveFileLock() throws StandardException

Get an exclusive lock with this name. This is used to ensure that two or more JVMs do not open the same database at the same time. ny StorageFile that has getExclusiveFileLock() called on it is not intended to be read from or written to. It's sole purpose is to provide a locked entity to avoid multiple instances of Derby accessing the same database. getExclusiveFileLock() may delete or overwrite any existing file.

Returns:int

EXCLUSIVE_FILE_LOCK_NOT_AVAILABLE if the lock cannot be acquired because it is already held.
EXCLUSIVE_FILE_LOCK if the lock was successfully acquired.
NO_FILE_LOCK_SUPPORT if the system does not support exclusive locks.

getInputStreamback to summary
public InputStream getInputStream() throws FileNotFoundException

Creates an input stream from a file name.

Returns:InputStream

an input stream suitable for reading from the file.

Exceptions
FileNotFoundException:
if the file is not found.
getNameback to summary
public String getName()
Returns:String

The last segment in the path name, "" if the path name sequence is empty.

getOutputStreamback to summary
public OutputStream getOutputStream() throws FileNotFoundException

Creates an output stream from a file name. If a normal file already exists with this name it will first be truncated to zero length.

Returns:OutputStream

an output stream suitable for writing to the file.

Exceptions
FileNotFoundException:
if the file exists but is a directory rather than a regular file, does not exist but cannot be created, or cannot be opened for any other reason.
getOutputStreamback to summary
public OutputStream getOutputStream(boolean append) throws FileNotFoundException

Creates an output stream from a file name.

Parameters
append:boolean

If true then data will be appended to the end of the file, if it already exists. If false and a normal file already exists with this name the file will first be truncated to zero length.

Returns:OutputStream

an output stream suitable for writing to the file.

Exceptions
FileNotFoundException:
if the file exists but is a directory rather than a regular file, does not exist but cannot be created, or cannot be opened for any other reason.
getParentDirback to summary
public StorageFile getParentDir()

Get the name of the parent directory if this name includes a parent.

Returns:StorageFile

An StorageFile denoting the parent directory of this StorageFile, if it has a parent, null if it does not have a parent.

getPathback to summary
public String getPath()

Converts this StorageFile into a pathname string. The character returned by StorageFactory.getSeparator() is used to separate the directory and file names in the sequence.

The returned path may include the database directory. Therefore it cannot be directly used to make an StorageFile equivalent to this one.

Returns:String

The pathname as a string.

See Also
StorageFactory#getSeparator
getRandomAccessFileback to summary
public StorageRandomAccessFile getRandomAccessFile(String mode) throws FileNotFoundException

Get a random access file. This method is not called if the StorageFactory is read only. It is unspecified if the StorageFactory that created it is not a WritableStorageFactory.

Parameters
mode:String

"r", "rw", "rws", or "rwd". The "rws" and "rwd" modes specify that the data is to be written to persistent store, consistent with the java.io.RandomAccessFile class ("synchronized" with the persistent storage, in the file system meaning of the word "synchronized"). However the implementation is not required to implement the "rws" or "rwd" modes. If the "rws" andr "rwd" modes are supported then the supportsRws() method of the StorageFactory returns true. If supportsRws() returns false then the implementation may treat "rws" and "rwd" as "rw". It is up to the user of this interface to call the StorageRandomAccessFile.sync method if necessary. However, if the "rws" or "rwd" modes are supported and the RandomAccessFile was opened in "rws" or "rwd" mode then the implementation of StorageRandomAccessFile.sync need not do anything.

Returns:StorageRandomAccessFile

an object that can be used for random access to the file.

Exceptions
FileNotFoundException:
if the file exists but is a directory rather than a regular file, or cannot be opened or created for any other reason .
IllegalArgumentException:
if the mode argument is not equal to one of "r", "rw", "rws", or "rwd".
See Also
java.io.RandomAccessFile
isDirectoryback to summary
public boolean isDirectory()

Tests whether the named file is a directory, or not. This is only called in writable storage factories.

Returns:boolean

true if named file exists and is a directory, false if not. The return value is undefined if the storage is read-only.

limitAccessToOwnerback to summary
public void limitAccessToOwner() throws IOException

Use when creating a new file. By default, a file created in an underlying file system, if applicable, will have read and write access for the file owner unless the property derby.useDefaultFilePermissions is set to true.

listback to summary
public String[] list()

Get the names of all files and sub-directories in the directory named by this path name. This method is only used in a writable database.

Returns:String[]

An array of the names of the files and directories in this directory denoted by this abstract pathname. The returned array will have length 0 if this directory is empty. Returns null if this StorageFile is not a directory, or if an I/O error occurs. The return value is undefined if the database is read-only.

mkdirback to summary
public boolean mkdir()

Creates the named directory.

Returns:boolean

true if the directory was created; false if not.

mkdirsback to summary
public boolean mkdirs()

Creates the named directory, and all nonexistent parent directories.

Returns:boolean

true if the directory was created, false if not

releaseExclusiveFileLockback to summary
public void releaseExclusiveFileLock()

Release the resource associated with an earlier acquired exclusive lock releaseExclusiveFileLock() may delete the file

See Also
getExclusiveFileLock
renameToback to summary
public boolean renameTo(StorageFile newName)

Rename the file denoted by this name. Note that StorageFile objects are immutable. This method renames the underlying file, it does not change this StorageFile object. The StorageFile object denotes the same name as before, however the exists() method will return false after the renameTo method executes successfully.

It is not specified whether this method will succeed if a file already exists under the new name.

Parameters
newName:StorageFile

the new name.

Returns:boolean

true if the rename succeeded, false if not.

setReadOnlyback to summary
public boolean setReadOnly()

Make the named file or directory read-only. This interface does not specify whether this also makes the file undeletable.

Returns:boolean

true if the named file or directory was made read-only, or it already was read-only; false if not.