Java NIO

Path

Path通常代表文件系统中的位置。

创建一个Path

调用Paths.get(String first,String … more)。第二个变量一般用不到,用来把额外的字符串合并起来形成Path字符串。

在/usr/bin目录下的文件压缩工具zip创建一个绝对Path
Paths.get(“usr/bin/zip”)

也可以用如下方式创建:

FileSystems.getDefault().getPath("/usr/bin/zip");

创建Path时可以使用相对路径。

从Path中获取信息

Path.getFileName()//获取文件名

Path.getNameCount()//获取名称元素的数量

Path.getParent()//获取父目录

Path.getRoot()//获取根目录

移除冗余项

. 表示当前目录;
.. 表示父目录。

举个例子:

比如在当前目录下有个test.java的文件,我们会这么写“./test.java”。
去掉冗余后就是test.java。

Paths.get("./test.java").normalize();

转换Path

path.resolve("") 合并两个path

path.relativize(path) 取得两个path之间的路径

为了向后兼容,File中新增了toPath()方法,它可以把已有的File转化为新的Path。Path中也有个toFile()方法,将已有的Path转化为File。

处理目录与目录树

在目录中查找文件

Files.newDirectoryStream(Path directory,String patternMatch) // 声明过滤流

遍历目录树

Files.walkFileTree(Path startingDir, FileVisitor<? super Path> visitor)

FileVisitor的方法很多,要使用这个接口,就要实现好多方法。所以有个默认实现类SimpleVisitor。

NIO文件系统I/O

文件处理的基础类

Files 复制,移动,删除或处理文件的工具类
WatchService 用来监视文件或目录的核心类

创建和删除文件

Files.createFile(path)
Files.delete(path)

文件的复制和移动

Files.copy(source,target,params) //params为复制文件属性(REPLACE_EXISTING)

Files.move(source,target,CopyOptions)