在丑陋的 Java I/O 编程方式诞生多年以后,Java终于简化了文件读写的基本操作。
文件和目录路径
一个path对象表示一个文件或者目录的路径, 是一个跨操作系统(OS)和文件系统的抽象, 目的是在构造路径时不必关注底层操作系统, 可以在不进行修改的情况下 , 让程序运行在不同的操作系统上, java.nio.file.Paths 类包含一个重载方法static get(),也就是它帮你把你传入的String或者uri(统一资源标识符)来转换成对应的操作系统的路径, 返回一个path对象
路径分析
Files 工具类包含一系列完整的方法用于获得 Path 相关的信息。
// files/PathAnalysis.javaimport java.nio.file.*;import java.io.IOException;public class PathAnalysis {static void say(String id, Object result) {System.out.print(id + ": ");System.out.println(result);}public static void main(String[] args) throws IOException {System.out.println(System.getProperty("os.name"));Path p = Paths.get("PathAnalysis.java").toAbsolutePath();say("Exists", Files.exists(p));say("Directory", Files.isDirectory(p));say("Executable", Files.isExecutable(p));say("Readable", Files.isReadable(p));say("RegularFile", Files.isRegularFile(p));say("Writable", Files.isWritable(p));say("notExists", Files.notExists(p));say("Hidden", Files.isHidden(p));say("size", Files.size(p));say("FileStore", Files.getFileStore(p));say("LastModified: ", Files.getLastModifiedTime(p));say("Owner", Files.getOwner(p));say("ContentType", Files.probeContentType(p));say("SymbolicLink", Files.isSymbolicLink(p));if(Files.isSymbolicLink(p))say("SymbolicLink", Files.readSymbolicLink(p));if(FileSystems.getDefault().supportedFileAttributeViews().contains("posix"))say("PosixFilePermissions",Files.getPosixFilePermissions(p));}}/* 输出:Windows 10Exists: trueDirectory: falseExecutable: trueReadable: trueRegularFile: trueWritable: truenotExists: falseHidden: falsesize: 1631FileStore: SSD (C:)LastModified: : 2017-05-09T12:07:00.428366ZOwner: MINDVIEWTOSHIBA\Bruce (User)ContentType: nullSymbolicLink: false*/
这一张看 java.nio.file 的javaDoc
