public interface XFileAccessor
A class file that implements this interface must be named "XFileAccessor" and be installed in a directory named after the URL scheme that it implements, for instance, an XFileAccessor that provides file access through the HTTP protocol would be associated with the "http" URL and its class file would be called:
http.XFileAccessor
A class prefix is added to this name. The default prefix is
com.sun
and this composite name is located by the
classLoader via the CLASSPATH.
For instance, Sun's "nfs" XFileAccessor is installed as:
com.sun.nfs.XFileAccessor
The default class prefix com.sun
can be changed by
setting the System property java.protocol.xfile
to any desired prefix or a list of prefixes separated by
vertical bars. Each prefix in the list will be used to
construct a package name and the classLoader will attempt
to load that package via the CLASSPATH. This process will
continue until the XFileAccessor is successfully loaded.
For instance, if you want to use the "ftp" XFileAccessor from Acme, Inc and the "nfs" XFileAccessor from "ABC Inc." then you can set the system property as follows:
java.protocol.xfile=com.acme|com.abc
When an "ftp" URL is used, the following package names will
be constructed:
com.acme.ftp.XFileAccessor
com.abc.ftp.XFileAccessor
com.sun.ftp.XFileAccessor
(the default "com.sun" prefix is automatically added to
the end of the property list)
The class loader attempts to load each of the constructed package names in turn relative to the CLASSPATH until it is successful.
A subsequent reference to an "nfs" URL will result in
the following list of candidate package names:
In this case the "nfs" XFileAccessor from ABC, Inc. will
be loaded in preference to Sun's NFS.
com.acme.nfs.XFileAccessor
com.abc.nfs.XFileAccessor
com.sun.nfs.XFileAccessor
XFile
Modifier and Type | Method and Description |
---|---|
boolean |
canRead()
Tests if the application can read from the specified file.
|
boolean |
canWrite()
Tests if the application can write to this file.
|
void |
close()
Close the file.
|
boolean |
delete()
Deletes the file specified by this object.
|
boolean |
exists()
Tests if this XFile object exists.
|
void |
flush()
Forces any buffered output bytes to be written out.
|
XFile |
getXFile()
Return the XFile for this Accessor
|
boolean |
isDirectory()
Tests if the file represented by this XFileAccessor
object is a directory.
|
boolean |
isFile()
Tests if the file represented by this
object is a "normal" file.
|
long |
lastModified()
Returns the time that the file represented by this
XFile object was last modified. |
long |
length()
Returns the length of the file represented by this
XFileAccessor object.
|
java.lang.String[] |
list()
Returns a list of the files in the directory specified by
this XFileAccessor object.
|
boolean |
mkdir()
Creates a directory whose pathname is specified by this
XFileAccessor object.
|
boolean |
mkfile()
Creates an empty file whose pathname is specified by this
XFileAccessor object.
|
boolean |
open(XFile xf,
boolean serial,
boolean readOnly)
Open a file in this filesystem.
|
int |
read(byte[] b,
int off,
int len,
long foff)
Reads a subarray as a sequence of bytes.
|
boolean |
renameTo(XFile dest)
Renames the file specified by this XFileAccessor object to
have the pathname given by the XFileAccessor object argument.
|
void |
write(byte[] b,
int off,
int len,
long foff)
Writes a sub array as a sequence of bytes.
|
boolean open(XFile xf, boolean serial, boolean readOnly)
xf
- The XFile for the file to be accessed
The URL will be of the form
<proto>://<location>/<path>
where <proto> is the name of the filesystem, e.g. "nfs" and <location> is the location of the filesystem. For nfs this is the network name of a server. The <path> is a pathname that locates the file within <location>. As required by RFC 1738, the component delimiters in the pathname are as for URL syntax: forward slashes only.
serial
- true if serial access; false if random accessreadOnly
- true if read only; false if read/writeXFile getXFile()
boolean exists()
true
if the file specified by this object
exists; false
otherwise.boolean canWrite()
true
if the application is allowed to
write to a file whose name is specified by this
object; false
otherwise.boolean canRead()
true
if the file specified by this
object exists and the application can read the file;
false
otherwise.boolean isFile()
A file is "normal" if it is not a directory and, in addition, satisfies other system-dependent criteria. Any non-directory file created by a Java application is guaranteed to be a normal file.
true
if the file specified by this
object exists and is a "normal"
file; false
otherwise.boolean isDirectory()
true
if this XFileAccessor object
exists and is a directory; false
otherwise.long lastModified()
XFile
object was last modified.
It is measured as the time in milliseconds since
midnight, January 1, 1970 UTC.
0L
if the specified file
does not exist.long length()
0L
if the specified
file does not exist.boolean mkfile()
true
if the file was created;
false
otherwise.boolean mkdir()
true
if the directory could be created;
false
otherwise.boolean renameTo(XFile dest)
dest
- the new filename.true
if the renaming succeeds;
false
otherwise.boolean delete()
true
if the file is successfully deleted;
false
otherwise.java.lang.String[] list()
.
" and
"..
" on Unix systems).int read(byte[] b, int off, int len, long foff) throws java.io.IOException
b
- the buffer into which the data is readoff
- the start offset in the data bufferlen
- the maximum number of bytes to be readfoff
- the offset into the filejava.io.IOException
- If an I/O error has occurred.void write(byte[] b, int off, int len, long foff) throws java.io.IOException
b
- the data to be writtenoff
- the start offset in the data in the bufferlen
- the number of bytes that are writtenfoff
- the offset into the filejava.io.IOException
- If an I/O error has occurred.void flush() throws java.io.IOException
java.io.IOException
- if an I/O error occurs.void close() throws java.io.IOException
java.io.IOException
- If an I/O error has occurred.