Apache NetBeans Wiki Index

Note: These pages are being reviewed.

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 a File, use FileUtil.toFileObject(File).

  • To look for a File from a FileObject, you may use FileUtil.toFile(FileObject).

Apache Migration Information

The content in this page was kindly donated by Oracle Corp. to the Apache Software Foundation.

This page was exported from http://wiki.netbeans.org/DevFaqFileVsFileObject , that was last modified by NetBeans user Tboudreau on 2010-01-24T05:41:34Z.

NOTE: This document was automatically converted to the AsciiDoc format on 2018-02-07, and needs to be reviewed.