导读:本文是从《Manipulating Files in Java 7》这篇文章翻译而来。 文章内容如下:

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

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

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

创建和删除文件

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

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

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

  1. Path target = Paths.get ("D:\\Backup\\MyStuff.txt"); Set<PosixFilePermission> perms  =
  2. PosixFilePermissions.fromString ("rw-rw-rw-"); FileAttribute<Set<PosixFilePermission>> attr  =
  3. PosixFilePermissions.asFileAttribute (perms); 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"); 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"); 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"); Files.move (source, target, REPLACE_EXISTING,
  4. COPY_ATTRIBUTES);

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

转载于:https://www.cnblogs.com/yangjin-55/archive/2012/11/26/2789815.html

在Java 7里如何对文件进行操作相关推荐

  1. java安全编码指南之:文件IO操作

    文章目录 简介 创建文件的时候指定合适的权限 注意检查文件操作的返回值 删除使用过后的临时文件 释放不再被使用的资源 注意Buffer的安全性 注意 Process 的标准输入输出 InputStre ...

  2. java 对象读写_java 对象输入输出流读写文件的操作实例

    java 对象输入输出流读写文件的操作实例 java 支持对对象的读写操作,所操作的对象必须实现Serializable接口. 实例代码: package vo; import java.io.Ser ...

  3. java安全编码指南之:文件和共享目录的安全性

    文章目录 简介 linux下的文件基本权限 linux文件的特殊权限 Set UID 和 Set GID Sticky Bit SUID/SGID/SBIT权限设置 文件隐藏属性 特殊文件 java中 ...

  4. java jdom_java使用Jdom实现xml文件写入操作实例

    本文实例讲述了java使用Jdom实现xml文件写入操作的方法.分享给大家供大家参考,具体如下: package com.yanek.demo.xml.test; import java.io.Fil ...

  5. Java中的文件输入输出操作如何实现

    Java是一门广泛应用的编程语言,它被用于开发各种类型的应用程序,包括桌面应用.服务器端应用和移动应用.在Java中,文件输入输出操作是很常见的,因为它们可以用于读取和写入文件数据.在本文中,我们将探 ...

  6. 从java进程里dump出类的class文件的小工具--dumpclass

    Serviceability Agent 想要查看一些被增强过的类的字节码,或者一些AOP框架的生成类,就需要dump出运行时的java进程里的字节码. 从运行的java进程里dump出运行中的类的c ...

  7. java删除文件下所有文件_用java实现删除文件夹里的所有文件

    package com.org.improve.contact; import java.io.File; public class DeletePaper { /** * @param args * ...

  8. java大文件读写操作,java nio 之MappedByteBuffer,高效文件/内存映射

    http://langgufu.iteye.com/blog/2107023 java处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的Io类,不过如果 ...

  9. java大文件读写操作

    转载自:http://blog.csdn.net/akon_vm/article/details/7429245 RandomAccessFile RandomAccessFile是用来访问那些保存数 ...

最新文章

  1. tiny4412 u-boot 启动参数的设置
  2. wpsarm64linux,WPS Office 2019 For Linux 11.1.0.9080版发布下载,附更新介绍和安装
  3. Atitit.导出excel报表的设计与实现java .net php 总
  4. 如何破解无线路由器密码,如何破解WEP密码,破解无线路由器
  5. sqlserver查询当月的每一天_SQL生成一年每一天的时间列表的几种方法
  6. 获取本地ip(一个或多个都能取)
  7. Atitit 从api的使用区分工程师级别 高级 中级 初级工程师常使用的api与框架类库 目录 1. 初级工程师使用的api和框架类库ssm 1 2. 中级工程师常使用的api和框架类库 1 3.
  8. python 顺序遍历文件夹下的文件
  9. 21天学通C语言-学习笔记(11)
  10. mac 蓝牙 串口调试 助手(工具)
  11. 级联选择器实现省市区三级联动
  12. Linux文件编辑命令vi详细说明
  13. 命主属性是水什么意思_八字五行属性查询表,有没有五行属性含水的且
  14. DirectShow连接Crossbar
  15. 多模态语义检索 | 基于 MetaSpore 快速部署 HuggingFace 预训练模型
  16. 大数据可视化坐标轴的定制与绘制3D图表及统计地图
  17. JavaScript笔试题(一)
  18. 三层架构和SpringMVC概述
  19. 棋牌游戏开发过程中遇到的困难 如何解决
  20. 如何做好抖音短视频?

热门文章

  1. 去除字符串标点 + 泛型算法使用
  2. 【会议】2009-3-23
  3. OpenCV区域提取之利用Rect提取在源代码中预先定义好的区域
  4. SQL数据库操作完全手册
  5. System.Diagnostics.Process启动Civil 3D及AutoCAD
  6. 构建dubbo分布式平台-maven构建ant-framework核心代码annotation
  7. 磁盘分析工具Ncdu的简单使用和体验
  8. 《游戏引擎架构》笔记十四
  9. 自动化发布-GitLab WEB Hooks 配置
  10. 第四节:python if语句用法