博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Java 7里如何对文件进行操作
阅读量:4991 次
发布时间:2019-06-12

本文共 2138 字,大约阅读时间需要 7 分钟。

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

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

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

创建和删除文件

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

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

 

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

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

 

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

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

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

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

拷贝和移动文件

下面的代码向你展示的是使用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);

 

经常的,在拷贝文件的过程中你可能希望指定一些操作设置。在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...) 方法里的参数来设置。

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.cnblogs.com/xuanzai/archive/2012/10/30/2746244.html

你可能感兴趣的文章
[FJOI2007]轮状病毒
查看>>
Azure AADSTS7000215 其中一种问题的解决
查看>>
关于吃苦
查看>>
uva 1629切蛋糕(dp)
查看>>
生成awr报告
查看>>
cocos2d-x 3.0rc2 对于每个包执行情况的重要平台 (超级方便)
查看>>
Android 深入解析光传感器(二)
查看>>
Ansible@一个高效的配置管理工具--Ansible configure management--翻译(八)
查看>>
【bzoj4552/Tjoi2016&Heoi2016】排序——二分+线段树/平衡树+线段树分裂与合并
查看>>
Windows Internals学习笔记(八)IO系统
查看>>
sql插件,SQLPrompt
查看>>
Objetive-C 属性和线程安全
查看>>
mybatis pagehelper实现分页
查看>>
很牛的javascript日期转换函数
查看>>
javascript格式化json显示
查看>>
Redis 在 SNS 类应用中的最佳实践有哪些?
查看>>
关于Unity 动画绘制原理
查看>>
django-xadmin后台开发
查看>>
Canvas链式操作
查看>>
学渣乱搞系列之网络流学习
查看>>