在Java 7中如何对文件进行操作

开发 后端
这篇文件是以你对Java7里提供的新的Path类很熟悉为前提,来讲解如何对文件进行操作。

创建文件

删除文件

复制文件

文件移动/改名

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

创建和删除文件

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

 

  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  = PosixFilePermissions.fromString("rw-rw-rw-");  
  3. FileAttribute<Set<PosixFilePermission>> attr  = PosixFilePermissions.asFileAttribute(perms);  
  4. 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 来设置这些属性。下面看一个例子。

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...) 方法里的参数来设置。

 

  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 非常便于使用。

【编辑推荐】

  1. Java 8整装待发 图谋云计算
  2. Java 7是蜜糖还是毒药?
  3. 选用Ibatis和Hibernate的区别
  4. JRuby和Java 7 我们可以期待什么
责任编辑:彭凡 来源: IT外刊评论
相关推荐

2023-12-13 13:47:00

Linux重组文件

2017-06-01 15:30:32

LinuxVim文件加密

2022-10-08 08:36:02

UbuntuLinux语音识别

2009-12-24 10:12:02

Linux查看文件编码

2016-12-14 09:24:42

文件目录压缩

2011-08-17 15:24:09

windows7鼠标超频

2010-03-05 09:40:08

Python递归

2010-01-22 16:21:50

C++ Builder

2021-12-02 08:47:40

LinuxLinux命令

2017-08-01 17:34:47

Linux内核驱动文件读写

2011-11-30 15:18:06

JavaJBossJ2EE

2010-02-05 16:35:35

Android操作系统

2010-03-26 15:14:20

Linux系统环境

2010-09-08 16:50:11

JavaScriptDOM操作

2019-09-24 20:07:30

Linux移动文件 命令

2020-12-03 07:43:03

JS Ajax JavaScript

2023-06-06 16:10:11

2011-03-17 11:08:49

Java SE

2011-09-07 14:43:24

2018-02-26 20:00:00

编程语言JavaMySQL
点赞
收藏

51CTO技术栈公众号