1. Creating and Using Path Objects
The NIO.2 API introduced the Path
interface to work with file and directory paths in an abstract manner.
Path instances are created using the Paths
factory class.
Example: Creating a Path Object
import java.nio.file.Path;
import java.nio.file.Paths;
Path path = Paths.get("example.txt");
System.out.println("Path: " + path);
System.out.println("File name: " + path.getFileName());
System.out.println("Parent: " + path.getParent());
2. Interacting with Path Objects Using the Files API
The Files
helper class provides methods for performing operations on files and directories represented by Path
objects.
Example: Creating, Copying, and Deleting Files
import java.nio.file.*;
Path source = Paths.get("source.txt");
Path target = Paths.get("target.txt");
// Create a file
Files.createFile(source);
System.out.println("File created: " + source);
// Copy a file
Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
System.out.println("File copied to: " + target);
// Delete a file
Files.delete(target);
System.out.println("File deleted: " + target);
3. Reading and Updating File Attributes
The NIO.2 API includes BasicFileAttributes
and BasicFileAttributeView
to retrieve and update file attributes efficiently.
Example: Reading File Attributes
import java.nio.file.*;
import java.nio.file.attribute.*;
Path path = Paths.get("example.txt");
BasicFileAttributes attributes = Files.readAttributes(path, BasicFileAttributes.class);
System.out.println("Creation Time: " + attributes.creationTime());
System.out.println("Size: " + attributes.size());
Example: Updating File Attributes
BasicFileAttributeView view = Files.getFileAttributeView(path, BasicFileAttributeView.class);
FileTime newTime = FileTime.fromMillis(System.currentTimeMillis());
view.setTimes(newTime, newTime, newTime);
System.out.println("File attributes updated.");
4. Reading Files Using Lambda Expressions
The NIO.2 API supports reading file data using lambda expressions and Streams for efficient, lazy processing.
Example: Traversing a Directory with Files.walk()
Files.walk(Paths.get(".")).forEach(System.out::println);
Example: Finding Files with Files.find()
Files.find(Paths.get("."), Integer.MAX_VALUE,
(path, attr) -> path.toString().endsWith(".txt"))
.forEach(System.out::println);
Example: Listing Directory Contents with Files.list()
Files.list(Paths.get(".")).forEach(System.out::println);
Example: Reading File Lines with Files.lines()
Files.lines(Paths.get("example.txt"))
.filter(line -> line.contains("Java"))
.forEach(System.out::println);
Conclusion
The NIO.2 API provides powerful tools for managing file paths, performing file operations, retrieving/updating file attributes, and processing file data efficiently using Streams and lambda expressions. By mastering these tools, developers can write modern and efficient file-handling code.
0 Comments