FileObjects are virtual files which live inside a FileSystem. They may represent a file on disk - or anything else walks and talks like a file, or can be made to - such as a file on a remote FTP server, a file entry in a JAR file, an entry in an XML file, etc.
FileObjects differ from java.io.File in certain ways:
- You don't generally ever have a FileObject representing a file that doesn't really exist
- You can listen for changes on FileObjects
- FileObjects can have key-value pairs of ad-hoc attributes associated with them
They are part of the Filesystems API; the javadoc for FileObject can be found here.
Source: NetBeans FAQ