blob: 8f5fbf4eb0e76deb1edbbb0377364d96cf944085 [file] [log] [blame]
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
= DevFaqFileVsFileObject
:jbake-type: wiki
:jbake-tags: wiki, devfaq, needsreview
:jbake-status: published
:keywords: Apache NetBeans wiki DevFaqFileVsFileObject
:description: Apache NetBeans wiki DevFaqFileVsFileObject
:toc: left
:toc-title:
:syntax: true
=== 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 link:http://wiki.netbeans.org/DevFaqFileVsFileObject[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.