Package org.jboss.vfs

Class VirtualFile

  • All Implemented Interfaces:
    java.io.Serializable

    public final class VirtualFile
    extends java.lang.Object
    implements java.io.Serializable
    A virtual file. This is a symbolic reference to a location in the virtual file system hierarchy. Holding a VirtualFile instance gives no guarantees as to the presence or immutability of the referenced file or any of its parent path elements.
    Version:
    $Revision: 44334 $
    See Also:
    Serialized Form
    • Field Detail

      • name

        private final java.lang.String name
      • lcname

        private final java.lang.String lcname
      • hashCode

        private final int hashCode
      • pathName

        private java.lang.String pathName
    • Constructor Detail

      • VirtualFile

        VirtualFile​(java.lang.String name,
                    VirtualFile parent)
    • Method Detail

      • getName

        public java.lang.String getName()
        Get the simple VF name (X.java)
        Returns:
        the simple file name
      • getLowerCaseName

        public java.lang.String getLowerCaseName()
        Deprecated.
        should not be used anymore, as the code is case-sensitive from JBVFS-170
        Get the simple VF name mapped to lowercase (x.java) (used by case-insensitive filesystems like ZIP).
        Returns:
        the lowercase simple file name
      • getPathName

        public java.lang.String getPathName()
        Get the absolute VFS full path name (/xxx/yyy/foo.ear/baz.jar/org/jboss/X.java)
        Returns:
        the VFS full path name
      • getPathNameRelativeTo

        public java.lang.String getPathNameRelativeTo​(VirtualFile parent)
                                               throws java.lang.IllegalArgumentException
        Get the path name relative to a parent virtual file. If the given virtual file is not a parent of this virtual file, then an IllegalArgumentException is thrown.
        Parameters:
        parent - the parent virtual file
        Returns:
        the relative path name as a string
        Throws:
        java.lang.IllegalArgumentException - if the given virtual file is not a parent of this virtual file
      • getPathNameRelativeTo

        private void getPathNameRelativeTo​(VirtualFile parent,
                                           java.lang.StringBuilder builder)
      • getPathName

        java.lang.String getPathName​(boolean url)
        Get the absolute VFS full path name. If this is a URL then directory entries will have a trailing slash.
        Parameters:
        url - whether or not this path is being used for a URL
        Returns:
        the VFS full path name
      • getLastModified

        public long getLastModified()
        When the file was last modified
        Returns:
        the last modified time
      • getSize

        public long getSize()
        Get the size
        Returns:
        the size
      • exists

        public boolean exists()
        Tests whether the underlying implementation file still exists.
        Returns:
        true if the file exists, false otherwise.
      • isRoot

        public boolean isRoot()
        Determines whether this virtual file represents a true root of a file system. On UNIX, there is only one root "/". Howevever, on Windows there are an infinite number of roots that correspond to drives, or UNC paths.
        Returns:
        true if this represents a root.
      • isLeaf

        @Deprecated
        public boolean isLeaf()
        Deprecated.
        use isDirectory() or isFile() instead
        Whether it is a simple leaf of the VFS, i.e. whether it can contain other files
        Returns:
        true if a simple file
      • isFile

        public boolean isFile()
        Determine whether the named virtual file is a plain file.
        Returns:
        true if it is a plain file, false otherwise
      • isDirectory

        public boolean isDirectory()
        Determine whether the named virtual file is a directory.
        Returns:
        true if it is a directory, false otherwise
      • openStream

        public java.io.InputStream openStream()
                                       throws java.io.IOException
        Access the file contents.
        Returns:
        an InputStream for the file contents.
        Throws:
        java.io.IOException - for any error accessing the file system
      • delete

        public boolean delete()
        Delete this virtual file
        Returns:
        true if file was deleted
      • getPhysicalFile

        public java.io.File getPhysicalFile()
                                     throws java.io.IOException
        Get a physical file for this virtual file. Depending on the underlying file system type, this may simply return an already-existing file; it may create a copy of a file; or it may reuse a preexisting copy of the file. Furthermore, the returned file may or may not have any relationship to other files from the same or any other virtual directory.
        Returns:
        the physical file
        Throws:
        java.io.IOException - if an I/O error occurs while producing the physical file
      • doIoPrivileged

        private static <T> T doIoPrivileged​(java.security.PrivilegedExceptionAction<T> action)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • getParent

        public VirtualFile getParent()
        Get a VirtualFile which represents the parent of this instance.
        Returns:
        the parent or null if there is no parent
      • getParentFiles

        public VirtualFile[] getParentFiles()
        Get the all the parent files of this virtual file from this file to the root. The leafmost file will be at the start of the array, and the rootmost will be at the end.
        Returns:
        the array of parent files
      • getParentFileList

        public java.util.List<VirtualFile> getParentFileList()
        Get the all the parent files of this virtual file from this file to the root as a list. The leafmost file will be at the start of the list, and the rootmost will be at the end.
        Returns:
        the list of parent files
      • getParentFiles

        private VirtualFile[] getParentFiles​(int idx)
      • getChildren

        public java.util.List<VirtualFile> getChildren()
        Get the children. This is the combined list of real children within this directory, as well as virtual children created by submounts.
        Returns:
        the children
      • getChildren

        public java.util.List<VirtualFile> getChildren​(VirtualFileFilter filter)
                                                throws java.io.IOException
        Get the children
        Parameters:
        filter - to filter the children
        Returns:
        the children
        Throws:
        java.io.IOException - for any problem accessing the virtual file system
        java.lang.IllegalStateException - if the file is closed or it is a leaf node
      • getChildrenRecursively

        public java.util.List<VirtualFile> getChildrenRecursively()
                                                           throws java.io.IOException
        Get all the children recursively

        This always uses VisitorAttributes.RECURSE

        Returns:
        the children
        Throws:
        java.io.IOException - for any problem accessing the virtual file system
        java.lang.IllegalStateException - if the file is closed
      • getChildrenRecursively

        public java.util.List<VirtualFile> getChildrenRecursively​(VirtualFileFilter filter)
                                                           throws java.io.IOException
        Get all the children recursively

        This always uses VisitorAttributes.RECURSE

        Parameters:
        filter - to filter the children
        Returns:
        the children
        Throws:
        java.io.IOException - for any problem accessing the virtual file system
        java.lang.IllegalStateException - if the file is closed or it is a leaf node
      • visit

        public void visit​(VirtualFileVisitor visitor)
                   throws java.io.IOException
        Visit the virtual file system
        Parameters:
        visitor - the visitor
        Throws:
        java.io.IOException - for any problem accessing the virtual file system
        java.lang.IllegalArgumentException - if the visitor is null
        java.lang.IllegalStateException - if the file is closed
      • visit

        private void visit​(VirtualFileVisitor visitor,
                           boolean root)
                    throws java.io.IOException
        Throws:
        java.io.IOException
      • getChild

        public VirtualFile getChild​(java.lang.String path)
        Get a child virtual file. The child may or may not exist in the virtual filesystem.
        Parameters:
        path - the path
        Returns:
        the child
        Throws:
        java.lang.IllegalArgumentException - if the path is null
      • toURL

        public java.net.URL toURL()
                           throws java.net.MalformedURLException
        Get file's current URL. Note: if this VirtualFile refers to a directory at the time of this method invocation, a trailing slash will be appended to the URL; this means that invoking this method may require a filesystem access, and in addition, may not produce consistent results over time.
        Returns:
        the current url
        Throws:
        java.net.MalformedURLException - if the URL is somehow malformed
        See Also:
        asDirectoryURL(), asFileURL()
      • toURI

        public java.net.URI toURI()
                           throws java.net.URISyntaxException
        Get file's current URI. Note: if this VirtualFile refers to a directory at the time of this method invocation, a trailing slash will be appended to the URI; this means that invoking this method may require a filesystem access, and in addition, may not produce consistent results over time.
        Returns:
        the current uri
        Throws:
        java.net.URISyntaxException - if the URI is somehow malformed
        See Also:
        asDirectoryURI(), asFileURI()
      • asDirectoryURL

        public java.net.URL asDirectoryURL()
                                    throws java.net.MalformedURLException
        Get file's URL as a directory. There will always be a trailing "/" character.
        Returns:
        the url
        Throws:
        java.net.MalformedURLException - if the URL is somehow malformed
      • asDirectoryURI

        public java.net.URI asDirectoryURI()
                                    throws java.net.URISyntaxException
        Get file's URI as a directory. There will always be a trailing "/" character.
        Returns:
        the uri
        Throws:
        java.net.URISyntaxException - if the URI is somehow malformed
      • asFileURL

        public java.net.URL asFileURL()
                               throws java.net.MalformedURLException
        Get file's URL as a file. There will be no trailing "/" character unless this VirtualFile represents a root.
        Returns:
        the url
        Throws:
        java.net.MalformedURLException - if the URL is somehow malformed
      • asFileURI

        public java.net.URI asFileURI()
                               throws java.net.URISyntaxException
        Get file's URI as a file. There will be no trailing "/" character unless this VirtualFile represents a root.
        Returns:
        the url
        Throws:
        java.net.URISyntaxException - if the URI is somehow malformed
      • getCodeSigners

        public java.security.CodeSigner[] getCodeSigners()
        Get the CodeSigners for a the virtual file.
        Returns:
        the CodeSigners for the virtual file, or null if not signed
      • getCertificates

        public java.security.cert.Certificate[] getCertificates()
        Get the Certificates for the virtual file. Simply extracts the certificate entries from the code signers array.
        Returns:
        the certificates for the virtual file, or null if not signed
      • toString

        public java.lang.String toString()
        Get a human-readable (but non-canonical) representation of this virtual file.
        Overrides:
        toString in class java.lang.Object
        Returns:
        the string
      • equals

        public boolean equals​(java.lang.Object o)
        Determine whether the given object is equal to this one. Returns true if the argument is a VirtualFile from the same VFS instance with the same name.
        Overrides:
        equals in class java.lang.Object
        Parameters:
        o - the other object
        Returns:
        true if they are equal
      • equals

        public boolean equals​(VirtualFile o)
        Determine whether the given object is equal to this one. Returns true if the argument is a VirtualFile from the same VFS instance with the same name.
        Parameters:
        o - the other virtual file
        Returns:
        true if they are equal
      • hashCode

        public int hashCode()
        Get a hashcode for this virtual file.
        Overrides:
        hashCode in class java.lang.Object
        Returns:
        the hash code