二级文件系统java代码_Java 7 重新设计file I/O实现,重构原有代码吧!

为什么要使用Java 7的file I/O实现

在Java 7以前,java.io.File类提供了file I/O实现。但其有很多缺点:

  • 许多方法失败时不会抛出异常,因此也就不可能提供更多有用的信息为客户端提供帮助。比如,一个文件删除失败,客户端不知道是否存在,还是没有权限,还是其他问题导致。
  • 重命名不能跨平台保持一致性。
  • 对symbolic links没有真正的支持。
  • 对元数据没有更多的支持,比如,文件权限,拥有者,其他的安全属性。
  • 访问文件系统是低效的。
  • 大部分方法不可扩展。在服务器上请求一个大目录列表可能会导致挂起。大目录也可能导致内存资源问题,导致服务拒绝。
  • 如果出现symbolic links循环引用,不能写出一个可靠的递归文件树代码,也不能得到合适的响应。

Java 7的file I/O API的关键入口

在java.nio.file包中

  • Path类,代表文件系统的一个文件或一个目录。提供的方法可以用于操作一个抽象的路径。
0035cc0325f054c9f534bd5eefa13066.png
  • Paths类,工具类,通过一个路径字符串获取到一个依赖特定系统的Path对象。
  • Files类,提供了具体操作文件或目录的方法。比如,删除,创建,拷贝,获取文件或目录元数据等。
02083df188fdf1016205cf9327326b09.png
  • FileSystem类,提供获取文件系统相关的方法。比如,通过一个路径字符串获取到一个依赖特定系统的Path对象;可以获取文件系统的所有的文件存储。
  • FileStore类,一个文件系统有多个文件存储,FileStore代表底层的存储设备,比如设备,分区等。在Unix操作系统中,每一个装载的文件系统都是一个FileStore;而在Windows操作系统中,每一个卷代表一个FileStore,如C:,D:。

重构

  • 原来的代码中使用java.io.File类,现在想要利用java.nio.file包中的新功能

Path input = file.toPath();

将原有的java.io.File实例转换为java.nio.file.Path实例。然后就可以利用Path和Files来操作文件或目录。

  • 如果你不想使用第一种方法,或并不完全满足需求,那就重写file I/O相关的代码。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值