java文件IO总结

java.io库中的老IO接口使用起来很麻烦,现在总结一下java.nio提供的新接口的使用方法

其中核心类是Path,两个重要的工具类是PathsFiles

Path & Paths

Path表示一个地址,这个地址可以不存在。这类提供一些方法可以很方便的获取地址中的文件名、根目录、上级目录等等信息(用法基本类似于python中os.path库)。

一般情况下会通过Paths.get(String filepath)来将字符串类型的路径转换为Path类型(Paths基本上也只有这个方法)。之所以要把路径转换为Path类型是应为Files中提供的操作文件的方法基本上都是接收Path类型为参数的。

Path也可以转换为File对象以和老代码兼容,基本没用(File是老版本中用来描述路径的)。

Files

Files提供了很多操作文件的方法,如判断Path对应文件是否存在、是否为目录、读写文件等。以下是几个常用的方法:

  • Files.exist(Path path)判断是否存在
  • Files.readAlllines(Path path)将文件内容读到一个List<String>
    • 用于处理文本文件,二进制文件会出文件?
  • Files.readAllbytes(path)将文件内容全部读到一个字节数组中
  • Files.lines(path)将文件转换为一个Stream<String>用于流处理
    • 用于处理文本文件
    • Files没有提供转换为字节流Stream的对应方法
  • Files.write将字节写入文件中
    • 可添加java.nio.file.StandradOpenOption来指定打开文件的方法(只读,创建,添加等)。
  • Files.writeString将字符写入文件中

总结

新式io基本就三个类Path, Paths, Files基本可以满足日常读写文件需求。

但是对于其他io情况,比如socket编程还是需要使用java.io中的io流:

  • InputStream/OutputStream字节流
  • Reader/Writer字符流
  • 包装类(bytes->char)InputStreamReader/OutputStreamReader