Package com.sun.xfile

Interface XFileAccessor

  • All Known Implementing Classes:
    XFileAccessor, XFileAccessor, XFileAccessor, XFileAccessor

    public interface XFileAccessor
    The XFileAccessor interface is implemented by filesystems that need to be accessed via the XFile API. Classes that implement this interface must be associated with a URL scheme that is structured according to the Common Internet Scheme syntax described in RFC 1738; an optional location part followed by a hierarchical set of slash separated directories.

    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:

        com.acme.nfs.XFileAccessor
        com.abc.nfs.XFileAccessor
        com.sun.nfs.XFileAccessor
     
    In this case the "nfs" XFileAccessor from ABC, Inc. will be loaded in preference to Sun's NFS.
    Version:
    1.0, 04/08/98
    Author:
    Brent Callaghan
    See Also:
    XFile
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method 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.
    • Method Detail

      • open

        boolean open​(XFile xf,
                     boolean serial,
                     boolean readOnly)
        Open a file in this filesystem. This method is called before any other method. It may be used to open the real file.
        Parameters:
        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 access
        readOnly - true if read only; false if read/write
      • getXFile

        XFile getXFile()
        Return the XFile for this Accessor
      • exists

        boolean exists()
        Tests if this XFile object exists.
        Returns:
        true if the file specified by this object exists; false otherwise.
      • canWrite

        boolean canWrite()
        Tests if the application can write to this file.
        Returns:
        true if the application is allowed to write to a file whose name is specified by this object; false otherwise.
      • canRead

        boolean canRead()
        Tests if the application can read from the specified file.
        Returns:
        true if the file specified by this object exists and the application can read the file; false otherwise.
      • isFile

        boolean isFile()
        Tests if the file represented by this object is a "normal" file.

        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.

        Returns:
        true if the file specified by this object exists and is a "normal" file; false otherwise.
      • isDirectory

        boolean isDirectory()
        Tests if the file represented by this XFileAccessor object is a directory.
        Returns:
        true if this XFileAccessor object exists and is a directory; false otherwise.
      • lastModified

        long lastModified()
        Returns the time that the file represented by this XFile object was last modified. It is measured as the time in milliseconds since midnight, January 1, 1970 UTC.

        Returns:
        the time the file specified by this object was last modified, or 0L if the specified file does not exist.
      • length

        long length()
        Returns the length of the file represented by this XFileAccessor object.
        Returns:
        the length, in bytes, of the file specified by this object, or 0L if the specified file does not exist.
      • mkfile

        boolean mkfile()
        Creates an empty file whose pathname is specified by this XFileAccessor object.
        Returns:
        true if the file was created; false otherwise.
      • mkdir

        boolean mkdir()
        Creates a directory whose pathname is specified by this XFileAccessor object.
        Returns:
        true if the directory could be created; false otherwise.
      • renameTo

        boolean renameTo​(XFile dest)
        Renames the file specified by this XFileAccessor object to have the pathname given by the XFileAccessor object argument. The destination XFile object will be of the same URL scheme as this object. The change of name must not affect the existence or accessibility of this object.
        Parameters:
        dest - the new filename.
        Returns:
        true if the renaming succeeds; false otherwise.
      • delete

        boolean delete()
        Deletes the file specified by this object. If the target file to be deleted is a directory, it must be empty for deletion to succeed.
        Returns:
        true if the file is successfully deleted; false otherwise.
      • list

        java.lang.String[] list()
        Returns a list of the files in the directory specified by this XFileAccessor object.
        Returns:
        an array of file names in the specified directory. This list does not include the current directory or the parent directory ("." and ".." on Unix systems).
      • read

        int read​(byte[] b,
                 int off,
                 int len,
                 long foff)
          throws java.io.IOException
        Reads a subarray as a sequence of bytes.
        Parameters:
        b - the buffer into which the data is read
        off - the start offset in the data buffer
        len - the maximum number of bytes to be read
        foff - the offset into the file
        Returns:
        number of bytes read - zero if none.
        Throws:
        java.io.IOException - If an I/O error has occurred.
      • write

        void write​(byte[] b,
                   int off,
                   int len,
                   long foff)
            throws java.io.IOException
        Writes a sub array as a sequence of bytes.
        Parameters:
        b - the data to be written
        off - the start offset in the data in the buffer
        len - the number of bytes that are written
        foff - the offset into the file
        Throws:
        java.io.IOException - If an I/O error has occurred.
      • flush

        void flush()
            throws java.io.IOException
        Forces any buffered output bytes to be written out.

        Throws:
        java.io.IOException - if an I/O error occurs.
      • close

        void close()
            throws java.io.IOException
        Close the file. Closes this file and releases any system resources associated with the file. After the file is closed further I/O operations may throw IOException.
        Throws:
        java.io.IOException - If an I/O error has occurred.