public abstract class VFS
extends java.lang.Object
 Plugins can provide virtual file systems by defining entries in their
 services.xml files like so:
 
<SERVICE CLASS="org.gjt.sp.jedit.io.VFS" NAME="name">
    new MyVFS();
</SERVICE>
 URLs of the form name:path will then be handled
 by the VFS named name.
 See ServiceManager for details.
Methods whose names are prefixed with "_" expect to be given a previously-obtained session object. A session must be obtained with this method:
That method should be called from the AWT (EDT) thread, unless the filesystem hasNON_AWT_SESSION_CAP capability.
 When done, the session must be disposed of using
 _endVFSSession(Object,Component).
createVFSSession(String,Component) - unless
     NON_AWT_SESSION_CAP capability is setinsert(View,Buffer,String)load(View,Buffer,String,boolean)save(View,Buffer,String)getCapabilities() returns a value reflecting the functionality
 implemented by your VFS.| Modifier and Type | Class and Description | 
|---|---|
| static class  | VFS.DirectoryEntryCompareImplementation of  Comparatorinterface that comparesVFSFileinstances. | 
| Modifier and Type | Field and Description | 
|---|---|
| static int | BROWSE_CAPBrowse capability | 
| static int | CASE_INSENSITIVE_CAPCase insensitive file system capability. | 
| static int | DELETE_CAPDelete file capability. | 
| static java.lang.String | EA_MODIFIEDFile last modified date. | 
| static java.lang.String | EA_SIZEFile size. | 
| static java.lang.String | EA_STATUSFile status (read only, read write, etc). | 
| static java.lang.String | EA_TYPEFile type. | 
| static int | IOBUFSIZE | 
| static int | LOW_LATENCY_CAPLow latency capability. | 
| static int | MKDIR_CAPMake directory capability. | 
| static int | NON_AWT_SESSION_CAPSessions created outside Event Dispatching Thread -
 file system capability. | 
| static int | READ_CAPRead capability. | 
| static int | RENAME_CAPRename file capability. | 
| static int | WRITE_CAPWrite capability. | 
| Modifier | Constructor and Description | 
|---|---|
| protected  | VFS(java.lang.String name,
   int caps)Creates a new virtual filesystem. | 
| protected  | VFS(java.lang.String name,
   int caps,
   java.lang.String[] extAttrs)Creates a new virtual filesystem. | 
| Modifier and Type | Method and Description | 
|---|---|
| void | _backup(java.lang.Object session,
       java.lang.String path,
       java.awt.Component comp)Backs up the specified file. | 
| java.lang.String | _canonPath(java.lang.Object session,
          java.lang.String path,
          java.awt.Component comp)Returns the canonical form of the specified path name. | 
| java.io.InputStream | _createInputStream(java.lang.Object session,
                  java.lang.String path,
                  boolean ignoreErrors,
                  java.awt.Component comp)Creates an input stream. | 
| java.io.OutputStream | _createOutputStream(java.lang.Object session,
                   java.lang.String path,
                   java.awt.Component comp)Creates an output stream. | 
| boolean | _delete(java.lang.Object session,
       java.lang.String path,
       java.awt.Component comp)Deletes the specified URL. | 
| void | _endVFSSession(java.lang.Object session,
              java.awt.Component comp)Finishes the specified VFS session. | 
| void | _finishTwoStageSave(java.lang.Object session,
                   Buffer buffer,
                   java.lang.String path,
                   java.awt.Component comp)Called after a file has been saved and we use twoStageSave (first saving to
 another file). | 
| VFSFile | _getFile(java.lang.Object session,
        java.lang.String path,
        java.awt.Component comp)Returns the specified directory entry. | 
| java.lang.String[] | _listDirectory(java.lang.Object session,
              java.lang.String directory,
              java.lang.String glob,
              boolean recursive,
              java.awt.Component comp)A convenience method that matches file names against globs, and can
 optionally list the directory recursively. | 
| java.lang.String[] | _listDirectory(java.lang.Object session,
              java.lang.String directory,
              java.lang.String glob,
              boolean recursive,
              java.awt.Component comp,
              boolean skipBinary,
              boolean skipHidden)A convenience method that matches file names against globs, and can
 optionally list the directory recursively. | 
| java.lang.String[] | _listDirectory(java.lang.Object session,
              java.lang.String directory,
              VFSFileFilter filter,
              boolean recursive,
              java.awt.Component comp,
              boolean skipBinary,
              boolean skipHidden)A convenience method that filters the directory listing
 according to a filter, and can optionally list the directory
 recursively. | 
| VFSFile[] | _listFiles(java.lang.Object session,
          java.lang.String directory,
          java.awt.Component comp)Lists the specified directory. | 
| boolean | _mkdir(java.lang.Object session,
      java.lang.String directory,
      java.awt.Component comp)Creates a new directory with the specified URL. | 
| boolean | _rename(java.lang.Object session,
       java.lang.String from,
       java.lang.String to,
       java.awt.Component comp)Renames the specified URL. | 
| void | _saveComplete(java.lang.Object session,
             Buffer buffer,
             java.lang.String path,
             java.awt.Component comp)Called after a file has been saved. | 
| java.lang.String | constructPath(java.lang.String parent,
             java.lang.String path)Constructs a path from the specified directory and
 file name component. | 
| static boolean | copy(ProgressObserver progress,
    java.lang.String sourcePath,
    java.lang.String targetPath,
    java.awt.Component comp,
    boolean canStop)Copy a file to another using VFS. | 
| static boolean | copy(ProgressObserver progress,
    java.lang.String sourcePath,
    java.lang.String targetPath,
    java.awt.Component comp,
    boolean canStop,
    boolean sendVFSUpdate)Copy a file to another using VFS. | 
| static boolean | copy(ProgressObserver progress,
    VFS sourceVFS,
    java.lang.Object sourceSession,
    java.lang.String sourcePath,
    VFS targetVFS,
    java.lang.Object targetSession,
    java.lang.String targetPath,
    java.awt.Component comp,
    boolean canStop)Copy a file to another using VFS. | 
| static boolean | copy(ProgressObserver progress,
    VFS sourceVFS,
    java.lang.Object sourceSession,
    java.lang.String sourcePath,
    VFS targetVFS,
    java.lang.Object targetSession,
    java.lang.String targetPath,
    java.awt.Component comp,
    boolean canStop,
    boolean sendVFSUpdate)Copy a file to another using VFS. | 
| java.lang.Object | createVFSSession(java.lang.String path,
                java.awt.Component comp)Creates a VFS session. | 
| java.lang.Object | createVFSSessionSafe(java.lang.String path,
                    java.awt.Component comp)Same as  createVFSSession(java.lang.String, java.awt.Component), but may be called from any
 thread. | 
| int | getCapabilities()Returns the capabilities of this VFS. | 
| static java.awt.Color | getDefaultColorFor(java.lang.String name)Returns color of the specified file name, by matching it against
 user-specified regular expressions. | 
| java.lang.String[] | getExtendedAttributes()Returns the extended attributes supported by this VFS. | 
| java.lang.String | getFileName(java.lang.String path)Returns the file name component of the specified path. | 
| java.lang.String | getFilePath(java.lang.String vfsPath)Returns the path component of the specified VFS path. | 
| char | getFileSeparator()Returns the file separator used by this VFS. | 
| java.lang.String | getName()Returns this VFS's name. | 
| java.lang.String | getParentOfPath(java.lang.String path)Returns the parent of the specified path. | 
| java.lang.String | getTwoStageSaveName(java.lang.String path)Returns a temporary file name based on the given path. | 
| boolean | insert(View view,
      Buffer buffer,
      java.lang.String path)Inserts a file into the specified buffer. | 
| boolean | isMarkersFileSupported()Returns if an additional markers file can be saved by this VFS. | 
| boolean | load(View view,
    Buffer buffer,
    java.lang.String path,
    boolean untitled)Loads the specified buffer. | 
| void | reloadDirectory(java.lang.String path)Called before a directory is reloaded by the file system browser. | 
| boolean | save(View view,
    Buffer buffer,
    java.lang.String path)Saves the specifies buffer. | 
public static final int READ_CAP
public static final int WRITE_CAP
public static final int BROWSE_CAP
browser.actions.xml file in your plugin JAR, and
 define plugin.class.browser-menu-item
 or plugin.class.browser-menu properties.
 See EditPlugin for details.public static final int DELETE_CAP
public static final int RENAME_CAP
public static final int MKDIR_CAP
public static final int LOW_LATENCY_CAP
public static final int CASE_INSENSITIVE_CAP
public static final int NON_AWT_SESSION_CAP
createVFSSession is called on edt.
 All systems that do not implement createVFSSession
 should set it, but others may too.public static final java.lang.String EA_TYPE
public static final java.lang.String EA_STATUS
public static final java.lang.String EA_SIZE
public static final java.lang.String EA_MODIFIED
public static final int IOBUFSIZE
protected VFS(java.lang.String name,
              int caps)
name - The namecaps - The capabilitiesprotected VFS(java.lang.String name,
              int caps,
              java.lang.String[] extAttrs)
name - The namecaps - The capabilitiesextAttrs - The extended attributespublic java.lang.String getName()
vfs.name.label
 property.public int getCapabilities()
public boolean isMarkersFileSupported()
true.public java.lang.String[] getExtendedAttributes()
public java.lang.String getFileName(java.lang.String path)
path - The pathpublic java.lang.String getFilePath(java.lang.String vfsPath)
 If a VFS implementation can have additional
 information in the VFS path like username / password / host / port
 for FTP VFS or archive filename for archive VFS, this
 method should be overridden to remove those information also.
 The easiest would be to remove those additional information
 and then delegate to super.getFilePath().
vfsPath - The VFS pathpublic java.lang.String getParentOfPath(java.lang.String path)
path - The pathpublic java.lang.String constructPath(java.lang.String parent,
                                      java.lang.String path)
 Unless you are writing a VFS, this method should not be called
 directly. To ensure correct behavior, you must call
 MiscUtilities.constructPath(String,String)
 instead.
parent - The parent directorypath - The pathpublic char getFileSeparator()
public java.lang.String getTwoStageSaveName(java.lang.String path)
#name#save#
 and then renames it to the original file. However some virtual file
 systems might not support the # character in filenames,
 so this method permits the VFS to override this behavior.
 If this method returns null, two stage save will not
 be used for that particular file (introduced in jEdit 4.3pre1).path - The path namepublic void reloadDirectory(java.lang.String path)
public java.lang.Object createVFSSession(java.lang.String path,
                                         java.awt.Component comp)
NON_AWT_SESSION_CAP capability. When set,
 sessions may be obtained from any thread.path - The path in questioncomp - The component that will parent any dialog boxes shownpublic java.lang.Object createVFSSessionSafe(java.lang.String path,
                                             java.awt.Component comp)
createVFSSession(java.lang.String, java.awt.Component), but may be called from any
 thread. It first checks the NON_AWT_SESSION_CAP
 capability and enters EDT thread if necessary.public boolean load(View view, Buffer buffer, java.lang.String path, boolean untitled)
view - The viewbuffer - The bufferpath - The pathuntitled - is the buffer untitledpublic boolean save(View view, Buffer buffer, java.lang.String path)
view - The viewbuffer - The bufferpath - The pathpublic static boolean copy(ProgressObserver progress, VFS sourceVFS, java.lang.Object sourceSession, java.lang.String sourcePath, VFS targetVFS, java.lang.Object targetSession, java.lang.String targetPath, java.awt.Component comp, boolean canStop) throws java.io.IOException
progress - the progress observer. It could be null if you don't want to monitor progress. If not null
                  you should probably launch this command in a WorkThreadsourceVFS - the source VFSsourceSession - the VFS sessionsourcePath - the source path. It must be a file and must existstargetVFS - the target VFStargetSession - the target sessiontargetPath - the target path.
 If it is a path, it must exists, if it is a file, the parent must
 existscomp - The component that will parent error dialog boxescanStop - could this copy be stopped ?java.io.IOException - IOException If an I/O error occurspublic static boolean copy(ProgressObserver progress, VFS sourceVFS, java.lang.Object sourceSession, java.lang.String sourcePath, VFS targetVFS, java.lang.Object targetSession, java.lang.String targetPath, java.awt.Component comp, boolean canStop, boolean sendVFSUpdate) throws java.io.IOException
progress - the progress observer. It could be null if you don't want to monitor progress. If not null
                  you should probably launch this command in a WorkThreadsourceVFS - the source VFSsourceSession - the VFS sessionsourcePath - the source path. It must be a file and must existstargetVFS - the target VFStargetSession - the target sessiontargetPath - the target path.
 If it is a path, it must exists, if it is a file, the parent must
 existscomp - The component that will parent error dialog boxescanStop - could this copy be stopped ?sendVFSUpdate - true if you want to send a VFS update after the copy. False otherwise (if you do a lot
                      of copy)java.io.IOException - IOException If an I/O error occurspublic static boolean copy(ProgressObserver progress, java.lang.String sourcePath, java.lang.String targetPath, java.awt.Component comp, boolean canStop, boolean sendVFSUpdate) throws java.io.IOException
progress - the progress observer. It could be null if you don't want to monitor progress. If not null
                  you should probably launch this command in a WorkThreadsourcePath - the source pathtargetPath - the target pathcomp - The component that will parent error dialog boxescanStop - if true the copy can be stoppedsendVFSUpdate - true if you want to send a VFS update after the copy. False otherwise (if you do a lot
                      of copy)java.io.IOException - IOException If an I/O error occurspublic static boolean copy(ProgressObserver progress, java.lang.String sourcePath, java.lang.String targetPath, java.awt.Component comp, boolean canStop) throws java.io.IOException
progress - the progress observer. It could be null if you don't want to monitor progress. If not null
                  you should probably launch this command in a WorkThreadsourcePath - the source pathtargetPath - the target pathcomp - The component that will parent error dialog boxescanStop - if true the copy can be stoppedjava.io.IOException - IOException If an I/O error occurspublic boolean insert(View view, Buffer buffer, java.lang.String path)
view - The viewbuffer - The bufferpath - The pathpublic java.lang.String _canonPath(java.lang.Object session,
                                   java.lang.String path,
                                   java.awt.Component comp)
                            throws java.io.IOException
~ might be expanded to the user's home directory.session - The sessionpath - The pathcomp - The component that will parent error dialog boxesjava.io.IOException - if an I/O error occurredpublic java.lang.String[] _listDirectory(java.lang.Object session,
                                         java.lang.String directory,
                                         java.lang.String glob,
                                         boolean recursive,
                                         java.awt.Component comp)
                                  throws java.io.IOException
session - The sessiondirectory - The directory. Note that this must be a full
 URL, including the host name, path name, and so on. The
 username and password (if needed by the VFS) is obtained from the
 session instance.glob - Only file names matching this glob will be returnedrecursive - If true, subdirectories will also be listed.comp - The component that will parent error dialog boxesjava.io.IOException - if an I/O error occurredpublic java.lang.String[] _listDirectory(java.lang.Object session,
                                         java.lang.String directory,
                                         java.lang.String glob,
                                         boolean recursive,
                                         java.awt.Component comp,
                                         boolean skipBinary,
                                         boolean skipHidden)
                                  throws java.io.IOException
session - The sessiondirectory - The directory. Note that this must be a full
 URL, including the host name, path name, and so on. The
 username and password (if needed by the VFS) is obtained from the
 session instance.glob - Only file names matching this glob will be returnedrecursive - If true, subdirectories will also be listed.comp - The component that will parent error dialog boxesskipBinary - ignore binary files (do not return them).
    This will slow down the process since it will open the filesskipHidden - skips hidden files, directories, and
        backup files. Ignores any file beginning with . or #, or ending with ~
        or .bakjava.io.IOException - if an I/O error occurredpublic java.lang.String[] _listDirectory(java.lang.Object session,
                                         java.lang.String directory,
                                         VFSFileFilter filter,
                                         boolean recursive,
                                         java.awt.Component comp,
                                         boolean skipBinary,
                                         boolean skipHidden)
                                  throws java.io.IOException
session - The sessiondirectory - The directory. Note that this must be a full
 URL, including the host name, path name, and so on. The
 username and password (if needed by the VFS) is obtained from the
 session instance.filter - The VFSFileFilter to use for filtering.recursive - If true, subdirectories will also be listed.comp - The component that will parent error dialog boxesskipBinary - ignore binary files (do not return them).
    This will slow down the process since it will open the filesskipHidden - skips hidden files, directories, and
        backup files. Ignores any file beginning with . or #, or ending with ~
        or .bakjava.io.IOException - if an I/O error occurredpublic VFSFile[] _listFiles(java.lang.Object session, java.lang.String directory, java.awt.Component comp) throws java.io.IOException
session - The sessiondirectory - The directory. Note that this must be a full
 URL, including the host name, path name, and so on. The
 username and password (if needed by the VFS) is obtained from the
 session instance.comp - The component that will parent error dialog boxesjava.io.IOException - if an I/O error occurredpublic VFSFile _getFile(java.lang.Object session, java.lang.String path, java.awt.Component comp) throws java.io.IOException
session - The session get it with createVFSSession(String, Component)path - The pathcomp - The component that will parent error dialog boxesjava.io.IOException - if an I/O error occurredpublic boolean _delete(java.lang.Object session,
                       java.lang.String path,
                       java.awt.Component comp)
                throws java.io.IOException
session - The VFS sessionpath - The pathcomp - The component that will parent error dialog boxesjava.io.IOException - if an I/O error occurspublic boolean _rename(java.lang.Object session,
                       java.lang.String from,
                       java.lang.String to,
                       java.awt.Component comp)
                throws java.io.IOException
session - The VFS sessionfrom - The old pathto - The new pathcomp - The component that will parent error dialog boxesjava.io.IOException - if an I/O error occurspublic boolean _mkdir(java.lang.Object session,
                      java.lang.String directory,
                      java.awt.Component comp)
               throws java.io.IOException
session - The VFS sessiondirectory - The directorycomp - The component that will parent error dialog boxesjava.io.IOException - if an I/O error occurspublic void _backup(java.lang.Object session,
                    java.lang.String path,
                    java.awt.Component comp)
             throws java.io.IOException
session - The VFS sessionpath - The pathcomp - The component that will parent error dialog boxesjava.io.IOException - if an I/O error occurspublic java.io.InputStream _createInputStream(java.lang.Object session,
                                              java.lang.String path,
                                              boolean ignoreErrors,
                                              java.awt.Component comp)
                                       throws java.io.IOException
session - the VFS sessionpath - The pathignoreErrors - If true, file not found errors should be
 ignoredcomp - The component that will parent error dialog boxesnull if there was a problemjava.io.IOException - If an I/O error occurspublic java.io.OutputStream _createOutputStream(java.lang.Object session,
                                                java.lang.String path,
                                                java.awt.Component comp)
                                         throws java.io.IOException
session - the VFS sessionpath - The pathcomp - The component that will parent error dialog boxesjava.io.IOException - If an I/O error occurspublic void _saveComplete(java.lang.Object session,
                          Buffer buffer,
                          java.lang.String path,
                          java.awt.Component comp)
                   throws java.io.IOException
session - The VFS sessionbuffer - The bufferpath - The path the buffer was saved to (can be different from
 Buffer.getPath() if the user invoked the
 Save a Copy As command, for example).comp - The component that will parent error dialog boxesjava.io.IOException - If an I/O error occurspublic void _finishTwoStageSave(java.lang.Object session,
                                Buffer buffer,
                                java.lang.String path,
                                java.awt.Component comp)
                         throws java.io.IOException
session - The VFS sessionbuffer - The bufferpath - The path the buffer was saved to (can be different from
 Buffer.getPath() if the user invoked the
 Save a Copy As command, for example).comp - The component that will parent error dialog boxesjava.io.IOException - If an I/O error occurspublic void _endVFSSession(java.lang.Object session,
                           java.awt.Component comp)
                    throws java.io.IOException
session - The VFS sessioncomp - The component that will parent error dialog boxesjava.io.IOException - if an I/O error occurredpublic static java.awt.Color getDefaultColorFor(java.lang.String name)