The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available.
SeeDev.java for updated tutorials taking advantage of the latest releases.
SeeJava Language Changes for a summary of updated language features in Java SE 9 and subsequent releases.
SeeJDK Release Notes for information about new features, enhancements, and removed or deprecated options for all JDK releases.
Prior to the Java SE 7 release, thejava.io.File class was the mechanism used for file I/O, but it had several drawbacks.
rename method didn't work consistently across platforms.File methods didn't scale. Requesting a large directory listing over a server could result in a hang. Large directories could also cause memory resource problems, resulting in a denial of service.Perhaps you have legacy code that usesjava.io.File and would like to take advantage of thejava.nio.file.Path functionality with minimal impact to your code.
Thejava.io.File class provides thetoPath method, which converts an old styleFile instance to ajava.nio.file.Path instance, as follows:
Path input = file.toPath();
You can then take advantage of the rich feature set available to thePath class.
For example, assume you had some code that deleted a file:
file.delete();
You could modify this code to use theFiles.delete method, as follows:
Path fp = file.toPath();Files.delete(fp);
Conversely, thePath.toFile method constructs ajava.io.File object for aPath object.
Because the Java implementation of file I/O has been completely re-architected in the Java SE 7 release, you cannot swap one method for another method. If you want to use the rich functionality offered by thejava.nio.file package, your easiest solution is to use theFile.toPath method as suggested in the previous section. However, if you do not want to use that approach or it is not sufficient for your needs, you must rewrite your file I/O code.
There is no one-to-one correspondence between the two APIs, but the following table gives you a general idea of what functionality in thejava.io.File API maps to in thejava.nio.file API and tells you where you can obtain 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 | TheSeekableByteChannel functionality. | Random Access Files |
File.canRead,canWrite,canExecute | Files.isReadable,Files.isWritable, andFiles.isExecutable.On UNIX file systems, theManaging Metadata (File and File Store Attributes) package is used to check the nine file permissions. | Checking a File or Directory Managing Metadata |
File.isDirectory(),File.isFile(), andFile.length() | Files.isDirectory(Path, LinkOption...),Files.isRegularFile(Path, LinkOption...), andFiles.size(Path) | Managing Metadata |
File.lastModified() andFile.setLastModified(long) | Files.getLastModifiedTime(Path, LinkOption...) andFiles.setLastMOdifiedTime(Path, FileTime) | Managing Metadata |
TheFile methods that set various attributes:setExecutable,setReadable,setReadOnly,setWritable | These methods are replaced by theFiles methodsetAttribute(Path, String, Object, LinkOption...). | Managing Metadata |
new File(parent, "newfile") | parent.resolve("newfile") | Path Operations |
File.renameTo | Files.move | Moving a File or Directory |
File.delete | Files.delete | Deleting a File or Directory |
File.createNewFile | Files.createFile | Creating Files |
File.deleteOnExit | Replaced by theDELETE_ON_CLOSE option specified in thecreateFile method. | Creating Files |
File.createTempFile | Files.createTempFile(Path, String, FileAttributes<?>),Files.createTempFile(Path, String, String, FileAttributes<?>) | Creating Files Creating and Writing a File by Using Stream I/O Reading and Writing Files by Using Channel I/O |
File.exists | Files.exists andFiles.notExists | Verifying the Existence of a File or Directory |
File.compareTo andequals | Path.compareTo andequals | Comparing Two Paths |
File.getAbsolutePath andgetAbsoluteFile | Path.toAbsolutePath | Converting a Path |
File.getCanonicalPath andgetCanonicalFile | Path.toRealPath ornormalize | Converting a Path (toRealPath)Removing Redundancies From a Path ( normalize) |
File.toURI | Path.toURI | Converting a Path |
File.isHidden | Files.isHidden | Retrieving Information About the Path |
File.list andlistFiles | Path.newDirectoryStream | Listing a Directory's Contents |
File.mkdir andmkdirs | Files.createDirectory | Creating a Directory |
File.listRoots | FileSystem.getRootDirectories | Listing a File System's Root Directories |
File.getTotalSpace,File.getFreeSpace,File.getUsableSpace | FileStore.getTotalSpace,FileStore.getUnallocatedSpace,FileStore.getUsableSpace,FileStore.getTotalSpace | File Store Attributes |
About Oracle |Contact Us |Legal Notices |Terms of Use |Your Privacy Rights
Copyright © 1995, 2024 Oracle and/or its affiliates. All rights reserved.