在Java 7中处理文件

以下是The Well-Grounded Java Developer的草稿的修改后的片段。 它使您快速了解与以前版本相比,在Java 7中操作文件要容易得多。 通过使用新的Files类及其许多实用程序方法,您可以仅用一行代码就可以对文件执行以下操作:
  • 创建
  • 删除
  • 复制
  • 移动/重命名

提示关于Path的快速注释。 这篇文章假定您已经对新的Java 7 Path类有所了解,如果没有的话,这里是快速入门! 路径是文件系统上某个位置的逻辑抽象,例如, c:\” 路径,就像“ ../foobar.txt”一样

让我们从文件的创建和删除开始。

创建和删除文件

通过使用Files类中的简单辅助方法,您可以创建文件并轻松删除它们。

提示如果要运行本节中的代码段,请用与文件系统匹配的实际路径替换实际路径!

以下代码段显示了使用Files.createFile(Path target)方法的基本文件创建。

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

通常,您出于安全目的以及为了读取和/或写入和/或执行而知道是否正在创建文件的情况下,希望在该文件上指定一些文件属性。 由于这取决于文件系统,因此您需要利用特定于文件系统的文件权限类及其帮助程序。

例如,用于POSIX兼容文件系统的PosixFilePermissionPosixFilePermissions 。 设置POSIX文件系统中的owner-group-all的读写示例如下。

Path target = Paths.get("D:\\Backup\\MyStuff.txt");
Set<PosixFilePermission> perms
= PosixFilePermissions.fromString("rw-rw-rw-");
FileAttribute<Set<PosixFilePermission>> attr
= PosixFilePermissions.asFileAttribute(perms);
Files.createFile(target, attr);

java.nio.file.attribute包包含提供的FilePermission类的列表。 在The Well-Grounded Java Developer的第2章中还进一步详细介绍了文件属性支持。

警告创建具有特定权限的文件时,请注意该文件的父目录正在执行的所有umask限制或限制性权限。 例如,您可能会发现,即使为新文件指定了rw-rw-rw ,由于这些限制,它实际上也被创建为rw-r–r–

删除文件要简单一些,可以通过简单的Files.delete(Path)方法执行。

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

接下来,快速概述在文件系统中复制和移动文件。

复制和移动文件

通过使用Files类中的简单帮助程序方法,您可以轻松执行复制和移动操作。 下面的代码片段使用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);

通常,您想在复制操作中指定一些选项。 在Java 7中,可以使用StandardCopyOption枚举来指定这些选项。 下一个示例使用覆盖(即替换现有)选项。

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 (确保移动操作的两面都成功或该操作被回滚)。移动操作与复制操作非常相似,并使用原子文件执行。 move(Path source,Path target)方法。

再次,您通常希望该移动带有一些复制选项,因此可以使用Files.move(Path source,Path target,CopyOptions ...)方法(请注意varargs的使用)。

在这种情况下,我们希望在移动源文件时保留其属性,并覆盖目标文件(如果存在)。

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易于使用,我们希望您喜欢这个小尝尝!

编码愉快! 不要忘记分享!

参考文献:

相关文章:


翻译自: https://www.javacodegeeks.com/2011/09/manipulating-files-in-java-7.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值