java nio拷贝文件

我要指的更改是添加了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解析为另一个,等等。(有一种方法可用于从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

java nio拷贝文件