<!--
@page { size: 8.27in 11.69in; margin: 0.79in }
P { margin-top: 0in; margin-bottom: 0.08in }
-->
转自开发者的天空
删除操作
通过
Path类,我们可以删除文件、目录或符号链接。要注意的是当我们删除符号链接时,其指向的目的目录或文件不会被删除。当要删除一个目录时,该目录必须为空,否则会失败。
Path类提供了两个删除方法。第一个是
delete方法。
Delete方法会直接删除文件或目录,如果删除失败则会抛出异常。例如如果要删除的文件不存在,则会抛出
NoSuchFileException。程序员可以
catch这些异常并进行相应的处理。
try {
path.delete();
} catch (NoSuchFileException x) {
System.err.format("%s: no such file or directory%n", path);
} catch (DirectoryNotEmptyException x) {
System.err.format("%s not empty%n", path);
} catch (IOException x) {
//File permission problems are caught here.
System.err.println(x);
}
另外一个方法是
deleteIfExists。这个方法同样会删除文件或目录,和
delete方法唯一不同的是如果文件不存在,这个方法不会抛出异常。
拷贝操作
Path类提供了拷贝文件或目录的方法,就是
copyTo方法。(以前要
copy文件只能够自己写程序完成哦!)。在进行拷贝的时候,我们可以指定如果目标文件或目录已经存在时怎么处理;如果设置了
REPLACE_EXISTING,则会覆盖已有的文件或目录;如果没有设置
REPLACE_EXISTING,那么拷贝操作会失败。
要注意的是拷贝目录时,目录中的内容并没有被拷贝过去,新生成的目录会是一个空目录。要想将目录中的内容一起拷贝过去,只有自己编程了。
在拷贝符号链接时,默认的行为是拷贝符号链接指向的目的文件或目录。如果需要拷贝符号链接本身,需要指定
NOFOLLOW_LINKS或
REPLACE_EXISTING选项。
CopyTo方法接受
CopyOption类型的
varargs。
CopyOption是一个接口,目前有两个实现类:
StandardCopyOption和
LinkOption。
CopyTo方法能够支持的选项有:
* REPLACE_EXISTING –
当要拷贝的是文件是,如果目标文件已经存在,则覆盖目标文件。如果要拷贝的是目录,当目标目录已经存在时,如果目标目录为空,覆盖目标目录;如果目标目录不为空,抛出
FileAlreadyExistsException。如果要拷贝的是符号链接,那么拷贝符号链接本身。
* COPY_ATTRIBUTES –
连文件或目录的属性一起拷贝。不同的文件系统和平台支持不同的文件属性,但是所有的文件系统和平台都支持最后修改时间这个属性。
* NOFOLLOW_LINKS – 如果要拷贝的是符号链接,直接拷贝符号链接本身。
下面是使用
copyTo的代码例子:
import static java.nio.file.StandardCopyOption.*;
...
try {
path.copyTo(newPath, REPLACE_EXISTING, COPY_ATTRIBUTES);
} catch (IOException x) {
//Logic for error condition...
System.err.println(x);
return;
}
移动操作
Path还提供了
moveTo方法来移动文件或目录。如果没有设置
REPLACE_EXISTING选项,那么当目标文件或目录存在时,操作会失败。
空目录能够被移动,但是如果目录不为空,是否能够移动目录要取决于是否能够不移动目录的内容。例如在
Windows系统下,如果是同一个硬盘分区内的移动,就可以成功,但是如果是不同硬盘分区之间的移动,就会失败,会抛出
FileSystemException异常。同时要注意的是,目的目录的父目录一定要存在,否则会抛出
NoSuchFileException。例如将
c:\temp\test移动到
c:\save\test,如果
c:\save目录不存在,则会抛出异常。
MoveTo方法也接受可变数量的参数,其支持的选项有:
REPLACE_EXISTING
– 覆盖已经存在的文件或目录。如果目标文件
/目录是一个符号链接,那么该链接会被覆盖,但是起指向的文件或目录不会受到影响。
* ATOMIC_MOVE –
移动操作是一个原子操作。如果文件系统不支持移动的原子操作,会抛出异常。原子操作能够保证当你移动一个文件到一个目录中时,监视该目录的进程得到的是一个完整的文件。
下面是使用
moveTo方法的例子
import static java.nio.file.StandardCopyOption.*;
...
try {
path.moveTo(newPath, REPLACE_EXISTING);
} catch (IOException x) {
// Logic for error condition...
System.err.println(x);
return;
}
分享到:
相关推荐
Java SE程序 文件的拷贝InputStream类Java SE程序 文件的拷贝InputStream类Java SE程序 文件的拷贝InputStream类Java SE程序 文件的拷贝InputStream类Java SE程序 文件的拷贝InputStream类Java SE程序 文件的拷贝...
一个关于文件操作的静态工具类 实现手机SD卡目录或文件的拷贝 移动 删除 递归 Demo中有详细注释 在进行Demo测试时 建议先把测试的文件备份一下在测试 否则删除就找不回了 具体可见我博客...实现手机SD卡目录或文件的...
python爬虫-10-拷贝、移动文件和目录.ev4.rar
VisualC 实效编程 75 拷贝、删除和移动文件VisualC 实效编程 75 拷贝、删除和移动文件VisualC 实效编程 75 拷贝、删除和移动文件VisualC 实效编程 75 拷贝、删除和移动文件VisualC 实效编程 75 拷贝、删除和移动文件...
Linux 基础 34-拷贝和移动命令-06-mv命令移动文件或者目录.flv
3、HDFS的使用(读写、上传、下载、遍历、查找文件、整个目录拷贝、只拷贝文件、列出文件夹下文件、删除文件及目录、获取文件及文件夹属性等)-java 网址:...
Linux运维-操作系统 教程 从入门到精通101课-29-29文件系统命令-cp拷贝.mp4
安装包:java-7-openjdk-amd64.tar.gz 使用方法 1. 拷贝至服务器/个人电脑 2. 解包 mkdir /opt/jdk/ tar -zxvf java-7-openjdk-amd64.tar.gz -C /opt/jdk/ 3. 配置编译环境 JAVA_HOME=/opt/jdk/java-7-openjdk-amd...
C++ 文件操作类(拷贝、删除、移动、改名)~
用java实现的文件和文件夹拷贝和转移
Linux 基础 31-拷贝和移动命令-03-cp命令复制文件.flv
使用java IO技术实现将多文件中的内容集中到一个文件上 只需输入一个文件夹的路径和目的路径即可完成文件拷贝复制 并且解决了中文乱码的问题s
VC++ 拷贝 删除和移动文件的演示 VC++拷贝、删除和移动文件的演示,呵,虽然很简单,但是很基础 ,每一个VC的编程高手都是从这里学起的
用java实现文件拷贝的一个小程序,很实用的东西。
文件和 文件夹的创建、删除、拷贝、移动等常用操作,每个方法都有详细的说明,建议对java.io流操作不熟悉的人下载。本代码仅供参考,有一些思想是借鉴高手的,在此表示谢意!
ExtremeCopy Pro是一款Windows文件复制移动增强软件,它会根据硬件和系统资源自动优化文件复制和移动速度,据软件官方介绍,它比Windows 自身的复制移动速度快20%到120%,免费是针对大文件较为明显。而且ExtremeCopy...
Linux 基础 35-拷贝和移动命令-07-mv命令给文件或者目录重命名.flv
这里是Java拷贝文件的java文件 可以按照自己选择要拷贝的文本文件 和将拷贝文件存放的目录 只需输入目标文件的地址 和目的文件的地址 以及文件名 即可实现 是课堂例子的拓展实现
这是一款很好用的复制和移动软件----光速拷贝工具
java语言(文件和文件流知识点)实现图片的拷贝,从c盘拷贝到d盘