Java 简易完成文件的复制、移动与删除
Path和Files是在java SE 7中新添加进来的类,它们要比自JDK 1.0就开始使用的File类要方便的多。
知识简介:
Path表示的是一个目录名序列,其后还可以跟着一个文件名。路径中的第一个部件可以是根部件(相当于根目录),例如/或C:\,而允许访问的根部件取决于文件系统。以根部件开始的路径是绝对路径,否则就是相对路径。
以下为代码片段:
Path fromPath = Paths.get("c:","test","a.txt"); // 相当于 c:\test\a.txt a.txt为需要复制的文件
Path toPath = Paths.get("c:","test1","b.txt"); // 相当于 c:\test1\b.txt 。 b.txt无需存在
Files.copy(fromPath,toPath); // 完成复制
Files.move(fromPath,toPath); //移动文件(即复制并删除源文件)
注:如果目标路径已经存在(也就是b.txt文件),那么复制或者移动将失败。如果想要覆盖已经存在的目标路径,可以使用REPLACE_EXISTING选项。如果想要复制所有文件的属性,可以使用COPY_ATTRIBUTES选项。也可以同时使用两个选项,如下:
Files.
copy(fromPath , toPath ,StandardCopyOption.REPLACE_EXISTING,StandardCopyOption.COPY_ATTRIBUTES);
同时也可以将移动操作定义为原子性的,这样就可以保证要么自动操作完成,要么源文件继续保存在原来的位置,可以使用ATOMIC_MOVE来实现,代码如下:
Files.move(fromPath , toPath ,StandardCopyOption.ATOMIC_MOVE);
删除文件可以使用如下方法:
Files.delete(fromPath);
注:如果删除的文件不存在(也就是a.txt),则这个方法会抛出异常,因此,也可以使用下面的方法:
boolean isDeleted = Files.deleteIfExists(fromPath);
该方法也可以用来移除空目录。