Java的Path与File使用总结

前言

前边为什么zip时,没使用org.apache.tools.zip,一方面是由于代码本身的zip与unzip都是依赖的java.util.zip,改起来比较麻烦一些,另一方面在org.apache.tools.zip的示例代码中,用到了File,相比而言File会比Path落后一点。

这里对Path与File进行一个总结

Path是Java7出现的API,在java.nio包中;File与File*Stream在Java1.1中就已经存在了,在java.io包中,很显然Path是用来代替File的。

对比

filePath
java.io.file(class)java.nio.file.path(interface)
创建file = new File("path/to/file.txt")path = Paths.get("path/to/file.txt")
file = new File(parentFile, "file.txt")path = parentPath.resolve("file.txt")
文件名file.getFileName()path.getFileName().toString()
绝对路径file.getAbsolutePath()path.toAbsolutePath().toString()
获取父级file.getParentFile()path.getParent()
创建文件夹file.mkdirs()Files.createDirectories(path)
文件大小file.length()Files.size(path)
判断是否存在file.exists()Files.exists(path)
是否是文件夹file.isDir()Files.isDirectory(path)
删除file.delete()Files.delete(path)
FileOutputStreamnew FileOutputStream(file)Files.newOutputStream(path)
FileInputStreamnew FileInputStream(file)Files.newInputStream(path)
遍历file.listFiles(filter)Files.list(path) .filter(filter) .collect(toList())
  • File更面向对象一些,接口大多是在File对象中调用;Path依赖Paths、Files等工具类来完成。
  • File更倾向与返回值的true or false来判断执行结果;Path更倾向于抛异常IOException

示例

Files.write(Paths.get("image.png"), bytes); 		// 写文件

List<String> lines = Files.readAllLines(Paths.get("letter.txt"), StandardCharsets.UTF_8);  //  读文件

Files.lines(Paths.get("letter.txt"), StandardCharsets.UTF_8)
                .forEach(System.out::println);

参考

File VS Path

# 语言 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×