This convenience implementation does much of the hard work of
FileSystem and is generally more pleasant to create
subclasses of.

It caches information about the filesystem in memory and periodically refreshes its content. Many other
operations are performed in a safer manner so as to reuse experience of NetBeans developers; should be
substantially simpler to subclass than FileSystem itself.

Besides what is mentioned here, the AbstractFileSystem subclass be configurable as a JavaBean
(e.g. server address, prefix, whatever it needs).

First of all, you need not separately implement a FileObject - this is taken care of for you. You
need only provide some information about how essential actions should be carried out.

You may cause the filesystem to automatically refresh itself at periodic intervals, in case it is not
possible to be notified of changes directly. To do so, call AbstractFileSystem.setRefreshTime(int), e.g. from the
constructor.

Most of the meat of the implementation is provided by setting appropriate values for four protected
variables, which should be initialized in the constructor; each represents an implementation of a separate
interface handling one aspect of the filesystem.

Info member

It also specifies the raw implementation of two basic types of actions: getting input and output streams
for the file; and locking and unlocking it physically (optional and not to be confused with locking within
NetBeans).

Change member

Attribute member

AbstractFileSystem.attr is an AbstractFileSystem.Attr allowing NetBeans to read and write serializable
attributes (meta-information) to be associated with the file. Such attributes are not much used any more, but
they are occasionally.

There is a default implementation in DefaultAttributes which stores attributes in a file called
.nbattrs in each folder for which a file has some attributes, using XML augmented by Java
serialization, though the regular filesystems in NetBeans now instead store all attributes globally in
$userdir/var/attributes.xml. If you do use DefaultAttributes, use it not only for
AbstractFileSystem.attr but also for AbstractFileSystem.list (passing in a separate private AbstractFileSystem.List
implementation to its constructor) in order to filter the .nbattrs files from view.

existingFileObjects

For the FileObject specified as parameter, returns the recursive enumeration
of existing children fileobjects (both folders and data). It doesn't create
any new FileObject instances. Direct children are at the begining of the enumeration.