例子很简单,不过这里也有一个坑,就是path对应的系统文件也可能是不存在的,而且它的很多方法返回的都是Path类型
代码
Path workspace = Paths.get(“C:/DEV/workspace_study”);
Path p = workspace.resolve(“Sample/src/com/nio/TestPath.java”);
System.out.println(p);
会给出
C:\DEV\workspace_study\Sample\src\com\nio\TestPath.java
写成Path p = workspace.resolve(“Sample/src/com/nio/TestPath.java2”);
同样会给出C:\DEV\workspace_study\Sample\src\com\nio\TestPath.java2,不过注意这个java2文件不是真实存在的
另外 p.getFileName() 则会返回一个Path对象,而不是String
更进一步,如果你在调用toAbsolutePath()方法之前先调用了getFileName得到一个Path对象,那么恭喜你,你再调用toAbsolutePath()得到的对象可能是不存在的文件
System.out.println(p.toAbsolutePath());
System.out.println(p.getFileName().toAbsolutePath());
C:\DEV\workspace_study\Sample\src\com\nio\TestPath.java (存在)
C:\DEV\workspace_study\Sample\TestPath.java (不存在)
package com.nio;
import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
public class TestPath {
public static void main(String[] args) throws IOException {
Path workspace = Paths.get("C:/DEV/workspace_study");
Path fullpath = workspace.resolve("Sample/src/com/nio/TestPath.java");
System.out.println(fullpath);
DirectoryStream<Path> stream = Files.newDirectoryStream(Paths.get("C:/DEV/workspace_study/1/src"),"*.java");
for(Path p:stream){
System.out.println(p.getFileName());
}
Files.walkFileTree(workspace, new FindJavaVisitor());
}
}
class FindJavaVisitor extends SimpleFileVisitor<Path> {
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
if(file.getFileName().toString().endsWith(".java")){
System.out.println(file);
}
return FileVisitResult.CONTINUE;
}
}
C:\DEV\workspace_study\Sample\src\com\nio\TestPath.java
Com.java
Ref.java
C:\DEV\workspace_study\1\src\Com.java
C:\DEV\workspace_study\1\src\Ref.java
C:\DEV\workspace_study\Sample\src\com\nio\TestPath.java
C:\DEV\workspace_study\Sample\src\com\stream\Stu.java
C:\DEV\workspace_study\Sample\src\com\stream\Student.java
C:\DEV\workspace_study\Sample\src\com\stream\TestStream.java
C:\DEV\workspace_study\Sample\src\com\stream\TestStream2.java
C:\DEV\workspace_study\Sample\src\com\stream\TestStream3.java
C:\DEV\workspace_study\Sample\src\com\stream\TestStream4.java
C:\DEV\workspace_study\Sample\src\com\stream\TestStream5.java
C:\DEV\workspace_study\Sample\src\com\stream\TestStream6.java
C:\DEV\workspace_study\Sample\src\com\stream\TestStream7.java
C:\DEV\workspace_study\Sample\src\com\stream\TestStream8.java