设为首页收藏本站

Scripts 学盟

 找回密码
 加入学盟

QQ登录

只需一步,快速开始

查看: 1160|回复: 1
打印 上一主题 下一主题

在Java 7 里如何对文件进行操作 [复制链接]

Rank: 8Rank: 8

风雨相伴

跳转到指定楼层
1#
Snail 实名认证  发表于 2011-10-27 08:28:38 |只看该作者 |倒序浏览
本文是从 Manipulating Files in Java 7 这篇文章翻译而来。
转载自:外刊IT评论


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

  • 创建文件
  • 删除文件
  • 复制文件
  • 文件移动/改名


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



创建和删除文件

创建和删除文件

  1. Path target = Paths.get("D:\\Backup\\MyStuff.txt");
  2. Path file = Files.createFile(target);
复制代码

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

  1. Path target = Paths.get("D:\\Backup\\MyStuff.txt");
  2. Set<PosixFilePermission> perms
  3.     = PosixFilePermissions.fromString("rw-rw-rw-");
  4. FileAttribute<Set<PosixFilePermission>> attr
  5.     = PosixFilePermissions.asFileAttribute(perms);
  6. Files.createFile(target, attr);
复制代码

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



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


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

  1. Path target = Paths.get("D:\\Backup\\MyStuff.txt");
  2. Files.delete(target);
复制代码
拷贝和移动文件

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

  1. Path source = Paths.get("C:\\My Documents\\Stuff.txt");
  2. Path target = Paths.get("D:\\Backup\\MyStuff.txt");
  3. Files.copy(source, target);
复制代码

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

  1. import static java.nio.file.StandardCopyOption.*;
  2. Path source = Paths.get("C:\\My Documents\\Stuff.txt");
  3. Path target = Paths.get("D:\\Backup\\MyStuff.txt");
  4. Files.copy(source, target, REPLACE_EXISTING);
复制代码

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


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


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

  1. import static java.nio.file.StandardCopyOption.*;
  2. Path source = Paths.get("C:\\My Documents\\Stuff.txt");
  3. Path target = Paths.get("D:\\Backup\\MyStuff.txt");
  4. Files.move(source, target, REPLACE_EXISTING, COPY_ATTRIBUTES);
复制代码

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

分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享分享0 收藏收藏0
命运的手,推我向前!何处是停歇!

管理员

超级大菜鸟

Rank: 9Rank: 9Rank: 9

2#
混混@普宁.中国 实名认证  发表于 2011-10-27 08:38:57 |只看该作者
oh yeah, 俺 out 鸟

目前对 nio 的了解还....

使用道具 举报

您需要登录后才可以回帖 登录 | 加入学盟

手机版|Scripts 学盟   |

GMT+8, 2024-5-9 23:06 , Processed in 1.064706 second(s), 12 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部