Trail: Essential Classes
Lesson: Basic I/O
Section: File I/O (featuring NIO.2)
Legacy File I/O Code
Home Page > Essential Classes > Basic I/O
Legacy File I/O Code

Interoperability with Legacy Code

Prior to JDK7, the java.io.File class was the mechanism used for file I/O, but it had several drawbacks:

Perhaps you have legacy code that uses java.io.File and would like to take advantage of the java.nio.file.Path functionality with minimal impact to your code.

The java.io.File class provides the toPath method that converts an old style File instance to a java.nio.file.Path instance:

Path input = file.toPath();

You can then take advantage of the rich feature set available to the Path class.

For example, say you had a some code that deleted a file:

file.delete();

You can modify this code to use the Path.delete method like this:

Path fp = file.toPath();
fp.delete();

That's all you need to do!

Mapping java.io.File Functionality to java.nio.file

Because the Java implementation of file I/O has been completely re-architected in JDK7, you can't simply swap one method for another. If you want to use the rich functionality offered by the java.nio.file package, your easiest solution is to use the File.toPath method as suggested in the previous section. However, if you don't want to use that approach or it is not sufficient for your needs, you must re-write your file I/O code.

There is no one-to-one correspondence between the two, but the following table gives you a general idea of what functionality in the java.io.File API maps to in the java.nio.file API and tells you where you can get more information.

java.io.File Functionality java.nio.file Functionality Tutorial Coverage
java.io.File java.nio.file.Path The Path Class
java.io.RandomAccessFile The SeekableByteChannel functionality. Random Access Files
File.canRead, canWrite, canExecute The Path.checkAccess method.
On UNIX file systems, the File Attributes package is used to check the nine file permissions.
Checking a File or Directory (checkAccess)
Managing Metadata (File Attributes)
The File methods: isDirectory, isFile, setExecutable, setReadable, setReadOnly, lastModified, setLastModified, length, setWritable These methods that access attributes individually are replaced by the java.nio.file.attributes package, which reads the attributes in a more efficient bulk operation. Managing Metadata
File.renameTo Path.moveTo Moving a File or Directory
File.delete Path.delete or Path.delete(boolean) Deleting a File or Directory
File.createNewFile Path.createFile Creating Files
File.deleteOnExit Replaced by the DELETE_ON_CLOSE option specified to the createFile method. Creating Files
File.createTempFile There is no special-purpose method in the Path class for creating temp files, but this can easily be accomplished using the DELETE_ON_CLOSE flag with the createFile method. (The Path.newOutputStream and Path.newByteChannel methods also support the DELETE_ON_CLOSE option.)

An easy way to create a temp file in the new API:

Path tmpFile = File.createTempFile("blah",null).toPath();
Creating Files
Creating and Writing a File using Stream I/O
Reading and Writing Files using Channel I/O
File.exists Path.exists and Path.notExists Verifying the Existence of a File or Directory
File.compareTo and equals Path.compareTo and equals Comparing a Path
File.getAbsolutePath and getAbsoluteFile Path.toAbsolutePath Converting the Path
File.getCanonicalPath and getCanonicalFile Path.toRealPath or normalize Converting the Path (toRealPath)
Removing Redundancies from a Path (normalize)
File.toURI Path.toURI Converting the Path
File.isHidden Path.isHidden Retrieving Information about the Path
File.list and listFiles Path.newDirectoryStream Listing a Directory's Contents
File.mkdir and mkdirs Path.createDirectory Creating a Directory
File.listRoots FileSystem.getRootDirectories Listing a File System's Root Directories
File.getTotalSpace, File.getFreeSpace, File.getUsableSpace Attributes.readFileStoreSpaceAttributes File Store Attributes

Previous page: Other Useful Methods
Next page: Summary