Java 7 – NIO文件革命

Java 7(“项目代币”)已于去年7月问世。 此版本中的新增功能很有用,例如,尝试使用资源–从try块自动处理可关闭的资源,switch语句中的字符串,用于异常的multicatch以及用于使用泛型的'<>'运算符。 每个人最期待的附加功能,即闭包,已推迟到版本8。但是,令人惊讶的是,Java 7的发布带来了一些小的“革命”,在我看来,这在很大程度上没有引起注意,可能是Java 7发行版中最好的部分。

我要指的更改是添加了java.nio.file软件包。 java.nio.file软件包添加了类和接口,使使用Java中的文件和目录更加容易。 这些更改的首要也是最重要的一点就是复制或移动文件的能力。 我总是感到很沮丧,如果您要复制或移动文件,则必须滚动自己的“复制”或“移动”版本。 Guava项目com.google.common.io软件包中提供的实用程序提供了这些功能,但我认为复制和移动操作应是该语言的核心部分。 在接下来的几篇文章中,我将对此处讨论的类/接口以及一些其他未涵盖的类/接口进行更详细的介绍(包括代码示例)。 这篇文章是java.nio.file软件包中新功能的介绍和概述。

突围责任

如果您看一下目前的java.io软件包,那么绝大多数类都是针对输入流,输出流,读取器或写入器的。 只有一个类定义用于直接使用文件系统的操作,即File类。 java.io中的某些其他类将File对象作为构造函数中的参数,但是所有文件和目录的交互都是通过File类进行的。 在java.nio.file包中,功能已被引入其他类/接口。 首先要讨论的是Path接口和Files类。

路径和文件

Path对象类似于java.io.File对象,因为它可以表示文件系统上的文件或目录。 但是,Path对象更为抽象,因为它是代表文件系统上目录层次结构(可能包含或不包含文件)的一系列名称。 “路径”界面中没有允许使用目录或文件的方法。 定义的方法仅用于处理或操作Path对象,将一个Path解析为另一路径,等等。(有一种方法可用于从Path toFile中获取java.io.File对象。 File类现在包含一个toPath方法。)为了处理文件和目录,Path对象与Files类一起使用。 Files类完全由用于处理目录和文件的静态方法组成,包括复制,移动和用于符号链接的函数。 Files类中的另一个有趣的方法是newDirectoryStream方法,该方法返回一个DirectoryStream对象,该对象可以遍历目录中的所有条目。 尽管java.io.File类具有在其中提供FileFilter实例的list方法,但是newDirectoryStream可以使用字符串“ glob”(例如“ * .txt”)进行过滤。

文件存储

如前所述,与java.io包中的文件系统的所有交互都是通过File类。 这包括获取有关文件系统中已用或可用空间的信息。 在java.nio.file中,有一个FileStore类,它表示文件的存储类型,无论是设备,分区还是concreate文件系统。 FileStore类定义用于获取有关文件存储信息的方法,例如getTotalSpace,getUsableSpace,getUnallocated空间。 可以通过调用Files.getFileStore(Path path)方法来获取FileStore,该方法将返回该特定文件的FileStore。

文件系统和文件系统

顾名思义,文件系统提供对文件系统的访问,并且是文件系统中其他对象的工厂。 例如,FileSystem类定义一个getPath方法,该方法将字符串(/ foo / bar)转换为依赖于系统的Path对象,该对象可用于访问文件或目录。 FileSystem类还提供了一个getFileStores方法,该方法返回FileSystem中所有FileStore的可迭代方法。 FileSystems类使用静态FactorySystems.getDefault方法提供对FileSystem对象的访问。 还有一些用于创建自定义FileSystem对象的静态方法。

结论

这是使用java.nio.file软件包提供的文件的新功能的快速高级视图。 有更多的信息尚未在此处讨论,因此请看一下api文档。希望这篇文章能够使读者对Java 7中改进的文件处理感兴趣。请确保在我们继续探索时坚持学习。更详细的说明java.nio.file软件包必须提供的内容。

参考: Java 7的新增功能–我们的JCG合作伙伴 Bill Bejeck在“ 随机编码思想”博客上发表的(安静的)NIO文件革命


翻译自: https://www.javacodegeeks.com/2012/01/java-7-nio-file-revolution.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值