Welcome file 简介 Java I/O File API是JDK的核心API之一,在构建系统时,十分常用。我在工作实践中,见到大多数人最常使用的是 java.io.File 的API,对Java7之后出现的NIO的API不太熟悉。 总的来说,File能实现的功能NIO都能实现,并且NIO API更好用、更方便,同时内置了不少工具类,也解决了File API的一些缺陷。 根据实际工作中的使用和一些文档,本文总结了一些常见的Java File NIO的用法。 File的缺陷 File API比较简单好用,能完成大部分功能,但使用上有不少的问题,比如: 大多数方法出错不抛出异常 比如:删除 new File("1111.txt").delete() ,如果删除失败, delete 方法只会返回一个 false ,开发者没办法知道具体原因,比如是因为没权限,还是因为文件已被删除? 不支持软链接,这会导致有某些情况下没办法遍历目录 文件的元数据支持较少,比如缺少文件的权限、安全属性等 等等。 File和Path java.nio.file.Path 是Java7中用于替代File的新API,File和Path的概念相似,都是表示一个文件或文件夹的抽象。实际上,也可以把Path当成新API中的File。 FIle与Path的主要区别: File是实体类,Path是接口,使得Path更符合面向对象的设计原则。 File独立于文件系统,Path与文件系统相关,以及Path能给出更多关于文件的信息。 新写的代码最好就开始使用Path,有需要与File交互的地方,可以使用FIle与Path相互转换方法: Path path = new File ( DEMO_PATH ) . toPath ( ) ; File file = path . toFile ( ) ; Path的基本操作 创建Path URI uri = new URI ( "file:///" + DEMO_PATH ) ; // method 1 Path path1 = Paths . get ( DEMO_PATH ) ; // method 2