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

Java 7 – NIO文件革命相关推荐

  1. java nio拷贝文件_Java 7 – NIO文件革命

    java nio拷贝文件 Java 7("项目代币")已于去年7月问世. 此版本中的新增功能很有用,例如,尝试资源-从try块中自动处理可关闭的资源,switch语句中的字符串,用 ...

  2. JAVA之NIO按行读写大文件,完美解决中文乱码问题

    JAVA之NIO按行读写大文件,完美解决中文乱码问题 参考文章: (1)JAVA之NIO按行读写大文件,完美解决中文乱码问题 (2)https://www.cnblogs.com/jpfss/p/89 ...

  3. java files_Java NIO Files 操作文件

    Java7中文件IO发生了很大的变化,专门引入了很多新的类: import java.nio.file.DirectoryStream; import java.nio.file.FileSystem ...

  4. java 读取txt,java读取大文件

    java 读取txt,java读取大文件 package com.bbcmart.util; import java.io.File; import java.io.RandomAccessFile; ...

  5. java 读取流的字符编码格式_如何使用Java代码获取文件、文件流或字符串的编码方式...

    标签: 今天通过网络资源研究了一下如何使用Java代码获取文件.文件流或字符串的编码方式,现将代码与大家分享: package com.ghj.packageoftool; import info.m ...

  6. 理解Java的NIO

    同步与阻塞 同步和异步是针对应用程序和内核的交互而言的. 同步:执行一个操作之后,进程触发IO操作并等待(阻塞)或者轮询的去查看IO的操作(非阻塞)是否完成,等待结果,然后才继续执行后续的操作. 异步 ...

  7. java 多种类型文件复制_java多种文件复制方式以及效率比较

    1.背景 java复制文件的方式其实有很多种,可以分为 传统的字节流读写复制FileInputStream,FileOutputStream,BufferedInputStream,BufferedO ...

  8. java读取csv文件

    2019独角兽企业重金招聘Python工程师标准>>> CSV其实就是COMMA SEPARATED VALUE的缩写. 在开发中用Java操作csv文件有专门的的API叫javac ...

  9. java流与文件——内存映射文件

    [0]README 0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件--内存映射文件 的相关知识: 0.2)内存映射文件的目的是: 提高访问速度, 缓冲区Bu ...

最新文章

  1. 神同步!美国三地 Tesla 车主,自动驾驶都撞了警车
  2. js导出生成PDF插件
  3. hdu4994 博弈,按顺序拿球
  4. SAP Spartacus注入自定义的CurrentProductService
  5. AC automation 模板
  6. 取消一个请求(Cancel)
  7. 2021消费者数智化运营白皮书
  8. day14 java的super
  9. 微信又出隐藏“技能”,一夜之间朋友圈刷屏了
  10. LINUX下的流量监控shell脚本
  11. 前端页面卡顿、也许是DOM操作惹的祸?
  12. 【bzoj1668/Usaco2006 Oct】Cow Pie Treasures 馅饼里的财富——dp
  13. Oliver运维管理系统之一庐山真面目
  14. java读取excel的常用办法
  15. Windows XP 默认蓝色桌面的 RGB
  16. 史上最详细的测试用例的设计方法及案例
  17. ❤️C语言自定义类型的介绍❤️(结构体,枚举,联合体,位段)
  18. 泰晤士计算机专业排行,泰晤士2021世界大学学科排名:世界大学计算机学科排名...
  19. repo sync repo reset: error: entry ‘comand.py ‘ not uptodate . cannot merge
  20. 日光能和电池两用计算机,为什么太阳照射的光可以给太阳能转化为电,而我们的日光灯却不行?...

热门文章

  1. MySQL事务管理+安全管理+MySQL数据类型
  2. java线程——信号量(Semaphore)+障栅(CyclicBarrier)
  3. 特权级概述(哥子就想知道CPU是如何验证特权级的)GATE+TSS
  4. JAVA 实现 JWT
  5. packt_Packt和Java Code Geeks提供的$ 5 Java编程书籍!
  6. Neo4J OGM与Quarkus
  7. 用Java中的抽象类扩展抽象类
  8. 反应式服务中的线程本地状态可用性
  9. [MEGA DEAL]完整的Java编程训练营(94%折扣)
  10. java heroku_Heroku和Java –从新手到初学者,第1部分