Files vs. file objects
What exactly is the difference between a filename on disk and a
FileObject
? How do I convert them?
Raw files on disk are generally represented in Java using java.io.File
. These correspond directly to what the operating system thinks of as a file.
Under the Filesystems API, raw files are not usually manipulated
directly. Rather, you should usually be using FileObject
.
Besides the fact that most other APIs that
work with files expect FileObject
, these have a
number of advantages:
-
The filesystem they come from need not correspond to physical files on disk, but could be JAR file entries, or potentially database entries, FTP downloads, etc.
-
The rest of the IDE can interact with them in an object-oriented fashion, including locking and change notification.
However a FileObject
must always really exist on disk (or whatever backing storage is used), unlike File
.
In case translation from one to the other is necessary:
-
To look for a
FileObject
representing aFile
, useFileUtil.toFileObject(File)
. -
To look for a
File
from aFileObject
, you may useFileUtil.toFile(FileObject)
.