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

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

参考文献:

  • 在Java 7开发者博客上从我们的JCG合作伙伴处以Java 7 操作文件
  • 经验丰富的Java开发人员

相关文章:

  • JDK中的设计模式
  • Java内存模型–快速概述和注意事项
  • Java Fork / Join进行并行编程
  • 依赖注入–手动方式
  • 了解和扩展Java ClassLoader

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

在Java 7中处理文件相关推荐

  1. java中文件处理之图片_在Java 7中处理文件

    java中文件处理之图片 以下是The Well-Grounded Java Developer的草稿的修改后的片段. 它使您快速了解与以前版本相比,在Java 7中操作文件要容易得多. 通过使用新的 ...

  2. java文件按时间排序_如何按日期在java目录中排序文件?

    参见英文答案 > Best way to list files in Java, sorted by Date Modified?                                 ...

  3. java访问服务器中的文件,java 访问远程服务器文件

    java 访问远程服务器文件 内容精选 换一换 已成功登录Java性能分析.待安装Guardian的服务器已开启sshd.待安装Guardian的服务器已安装JRE,JRE版本要求为Huawei JD ...

  4. java内存中读文件_关于内存管理:读取Java中的大文件

    我需要一个非常了解Java和内存问题的人的建议. 我有一个大文件(大约1.5GB),我需要将此文件切成许多小文件(例如100个小文件). 我通常知道如何做到这一点(使用BufferedReader), ...

  5. 浏览器怎样更新java,Eclipse中js文件修改后浏览器不能及时更新的解决办法

    现在就分别把IE,firefox,chrome中解决办法贴出来供大家参考: 1.firefox(火狐浏览器)解决问题 第一步,在浏览器中敲入:about:config ,然后回车 第二步,在显示出的内 ...

  6. Java GUI中实现文件拷贝

    package cn.edu.hactcm; import java.awt.*; import java.awt.event.*; import java.io.*; import javax.sw ...

  7. 任意java程序都可以是servlet吗_C#从Java servlet中获取文件流实现任意文件下载

    目的: 从C#创建的客户端中向Java创建的servlet提交请求(不知道这是否算作严格的CS架构),servet返回一个文件流( 任意格式的文件 ),然后通过C#获取该文件流并保存到本地,使得文件可 ...

  8. Eclipse java工程中添加文件+导入工程文件

    1.添加源文件 在eclipse上建好java工程,想从别的地方把.java文件加进来,先把.java文件拷贝到src目录下,然后,在src文件夹下按F5刷新就可以了. 2.导入存在的工程文件 在开始 ...

  9. java项目文件_访问Java项目中的文件

    我有一个使用第三方应用程序的Java项目 . 我有许可证文件(.lic格式)存储在资源文件夹中 . 运行Ant脚本后,它会将此文件复制到/ lib / jar目录,因为它将项目汇总到Jar文件中以在服 ...

最新文章

  1. 把ros2录制的bag包转换为ros1格式的bag包
  2. Linux初学 - SSH
  3. git 忽略文件失效
  4. C#中NameValueCollection类用法详解
  5. AD中批量增加带密码用户
  6. Node+Express+Vue2.x+Mongodb结合muse-ui、less、rem等实现简易博客
  7. oracle 总账 gl,oracle EBS R12 总帐设置手册 BR100GL.pdf
  8. 各互联网公司延期上班一览
  9. 在线翻译英文html文件,copy html是什么意思
  10. 软件测试简历中的项目应该如何准备?
  11. 算法竞赛入门经典(第二版)习题代码语言篇(一)
  12. mysql api百度云盘_利用百度云盘API上传文件至百度云盘
  13. mac svn 可视化界面_SmartSVN for mac 14.0.1
  14. 吉他的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  15. centos添加第二张网卡
  16. 产品分析报告—哔哩哔哩
  17. EasyExcel读excel文件模板校验暨时间格式正则表达式
  18. 张小龙:做 PC 版微信是一种破坏
  19. BUUCTF笔记之Misc系列部分WriteUp(二)
  20. redis工具redis Desktop Manager使用

热门文章

  1. java重载与重写的区别+重写父类equals方法的完美实现
  2. Java版大顶堆的实现
  3. POJ3278(BFS入门)
  4. c++ 前缀 变量命名_前缀命名
  5. java 正则表达式 开头_如何在Java中修复表达式的非法开头
  6. activemq 性能测试_ActiveMQ性能测试
  7. 缓冲池java_了解Java缓冲池
  8. aws ecr_在ECR上推送Spring Boot Docker映像
  9. jooq 入门_jOOQ,H2和Maven入门
  10. jax-ws和jax-rs_使用JAX-RS和Jetty创建Web服务和Rest Server