使用Java.nio.file库可以实现优雅而高效的文件操作。Java.nio.file库提供了几个主要的类和方法,包括Path、Files和FileSystem等。下面详细讲解如何使用这些类和方法来完成文件操作。
Path类
Path类代表一个文件或目录的路径。可以通过Paths类的静态方法获取一个Path对象,例如:
Path path = Paths.get("C:/Users/Administrator/Desktop/test.txt");
1. 创建文件/目录
Path dirPath = Paths.get("C:/Users/Administrator/Desktop/testDir");
if(!Files.exists(dirPath)){
Files.createDirectory(dirPath);
}
Path filePath = Paths.get("C:/Users/Administrator/Desktop/testDir/testFile.txt");
if(!Files.exists(filePath)){
Files.createFile(filePath);
}
上面的代码演示了如何创建一个目录和一个文件。在创建文件和目录之前,需要确保它们不存在,否则会抛出异常。
2. 获取文件属性
Path path = Paths.get("C:/Users/Administrator/Desktop/test.txt");
BasicFileAttributes basicFileAttributes = Files.readAttributes(path, BasicFileAttributes.class);
System.out.println("文件大小:" + basicFileAttributes.size());
System.out.println("创建时间:" + basicFileAttributes.creationTime());
System.out.println("最后修改时间:" + basicFileAttributes.lastModifiedTime());
System.out.println("是否为目录:" + basicFileAttributes.isDirectory());
System.out.println("是否为文件:" + basicFileAttributes.isRegularFile());
上面的代码演示了如何获取文件的基本属性,包括文件大小、创建时间、最后修改时间、是否为目录和是否为文件等。
3. 读/写文件内容
Path path = Paths.get("C:/Users/Administrator/Desktop/test.txt");
// 读文件内容
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
for(String line: lines){
System.out.println(line);
}
// 写文件内容
List<String> newLines = new ArrayList<>();
newLines.add("1. 第一行");
newLines.add("2. 第二行");
newLines.add("3. 第三行");
Files.write(path, newLines, StandardCharsets.UTF_8, StandardOpenOption.APPEND);
上面的代码演示了如何读取和写入文件的内容。读取文件内容可以使用Files.readAllLines()方法,它会返回一个包含所有行的List对象。写入文件内容可以使用Files.write()方法,它接收三个参数:Path对象、需要写入文件的内容、以及文件编码格式。如果需要追加内容,可以使用StandardOpenOption.APPEND作为第四个参数。
FileSystem类
FileSystem类代表一个文件系统。可以通过FileSystems类的静态方法获取一个FileSystem对象,例如:
FileSystem fileSystem = FileSystems.getDefault();
1. 获取根目录列表
FileSystem fileSystem = FileSystems.getDefault();
Iterable<Path> rootDirectories = fileSystem.getRootDirectories();
for(Path path: rootDirectories){
System.out.println(path);
}
上面的代码演示了如何获取根目录列表。
2. 列出目录下的文件列表
Path path = Paths.get("C:/Users/Administrator/Desktop/testDir");
DirectoryStream<Path> stream = Files.newDirectoryStream(path);
for(Path subPath: stream){
System.out.println(subPath);
}
上面的代码演示了如何列出目录下的文件列表。
以上就是使用Java.nio.file库进行文件操作的详细攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用java.nio.file 库优雅的操作文件详解 - Python技术站