java文件IO总结
java.io
库中的老IO接口使用起来很麻烦,现在总结一下java.nio
提供的新接口的使用方法
其中核心类是Path
,两个重要的工具类是Paths
和Files
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