这两个类的加入使得对普通文件的处理更加快捷。让程序猿从FileOutputStream,BufferedInputStream等复杂的流操作中解救出来。
Path p=Paths.get("F:\\emp.txt");
byte[] by=Files.readAllBytes(p);
String con=new String(by,"UTF-8");两句话便完成了对一个文件的读入,第三句话是将文件当字符串读入。
对于文件的移动,也变得简单了不少。复制也同理,将move改为copy。
值得注意的是:如果目标文件已经存在,则会移动失败,若是要覆盖原有文件,可以使用REPLACE_EXISTING选项。
Files.move(from, to,StandardCopyOption.REPLACE_EXISTING);
若是想要复制所有文件属性,可以使用COPY_ATTRIBUTES.
Path from=Paths.get("F:\\emp.txt");
Path to=Paths.get("G:\\move.txt");
Files.move(from, to);
删除文件:Files.delete(path);若目标文件不存在抛异常。Files.deleteIfExists(path);若目标不存在会返回false。
创建新目录:Files.createDirectory(path);
创建新文件:Files.createFile(path);
Files类还可以获取文件信息。
如函数static boolean exists(path);等,详情见官方文档:官方Files介绍
Files可以高效地获取一个目录中所有文件(相对于File的方法高效地多)
DirectoryStreamentries = Files.newDirectoryStream(path);
for(Path entry:entries)
{
System.out.println(entry);
}并且,若是想要过滤文件也是可以的
比如 Files.new DirectorStream(path,"*.java");
这算是Glob模式。