如何在java中使用文件操作系统,在Java 7 里如何对文件进行操作

下面的代码片段是由经过验证的程序修改而来。观察这些代码片段你会发现,跟以前的版本相比,在 Java7 里,文件相关的操作变得简单的多了。通过使用新的Files 类里提供的各种方法,你可以只用一行代码就能完成下列的文件操作:

创建文件

删除文件

复制文件

文件移动/改名

这篇文件是以你对 Java7 里提供的新的Path类很熟悉为前提,如果你不熟悉这个类,这里就简单说一句, Path 是文件系统里对位置的一个逻辑概念,例如 c:\ 和 ../foobar.txt 都是Path。

创建和删除文件

下面的代码片段向你展示的是用 Files.createFile (Path target) 方法创建文件的基本用法。

Path target = Paths.get ("D:\\Backup\\MyStuff.txt");

Path file = Files.createFile (target);

很多时候,出于安全的原因,你可能希望在创建的文件上设置一下属性,例如:是否可读/可写/写执行。这些属性依赖于文件系统的种类,你需要使用跟文件系统相应的权限辅助类来完成这种操作。例如,PosixFilePermission和PosixFilePermissions 为 POSIX 文件系统设计的。下面的是在 POSIX 文件系统上的文件设置读写权限的用法。

Path target = Paths.get ("D:\\Backup\\MyStuff.txt");

Set perms

= PosixFilePermissions.fromString ("rw-rw-rw-");

FileAttribute> attr

= PosixFilePermissions.asFileAttribute (perms);

Files.createFile (target, attr);

这个 java.nio.file.attribute 包里提供了很多关于 FilePermission 的类。

警告 当创建一个带有权限属性的文件时,请注意包含这个文件的文件夹是否有权限的强制约束。例如,你会发现,由于这些限制,尽管你给创建的文件指定了 rw-rw-rw 权限,实际创建的结果却是 rw-r–r– 。

删除文件更简单,使用 Files.delete (Path) 这个方法。

Path target = Paths.get ("D:\\Backup\\MyStuff.txt");

Files.delete (target);

拷贝和移动文件

下面的代码向你展示的是使用 Files.copy (Path source, Path target) 方法做文件拷贝的基本用法。

Path source = Paths.get ("C:\\My Documents\\Stuff.txt");

Path target = Paths.get ("D:\\Backup\\MyStuff.txt");

Files.copy (source, target);

经常的,在拷贝文件的过程中你可能希望指定一些操作设置。在 Java7 里,你可以通过使用 StandardCopyOption enum 来设置这些属性。下面看一个例子。

import static java.nio.file.StandardCopyOption.*;

Path source = Paths.get ("C:\\My Documents\\Stuff.txt");

Path target = Paths.get ("D:\\Backup\\MyStuff.txt");

Files.copy (source, target, REPLACE_EXISTING);

拷贝操作时可以使用的属性还包括COPY_ATTRIBUTES (保留文件属性) 和 ATOMIC_MOVE (确保移动事务操作的成功,否则进行回滚)。

移动文件的操作跟拷贝很相似,使用 Files.move (Path source, Path target) 方法。

同样,你也可以指定移动操作的属性,使用 Files.move (Path source, Path target, CopyOptions...) 方法里的参数来设置。

import static java.nio.file.StandardCopyOption.*;

Path source = Paths.get ("C:\\My Documents\\Stuff.txt");

Path target = Paths.get ("D:\\Backup\\MyStuff.txt");

Files.move (source, target, REPLACE_EXISTING, COPY_ATTRIBUTES);

可以看出,新的用于文件操作的 NIO.2 API 非常便于使用。0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值