跳至主要内容

博文

目前显示的是 六月, 2021的博文

Java NIO File API 使用总结 2

Welcome file 简介 在之前的文章中总结了NIO的Path接口和Files工具类的使用,本文继续总结一些其他的新功能和概念 NIO的基础概念和基本使用 不同于传统的Java File I/O的Stream流的概念,NIO基于Buffer和Channel重新设计了一套API。Buffer的API相对来说比较难用,不过具有零拷贝的功能,可以大大提高文件传输速度。 创建和写入文件 public static void createAndWriteFile ( ) { ByteBuffer byteBuffer = ByteBuffer . allocate ( 1024 ) ; byteBuffer . put ( "HelloWorld" . getBytes ( StandardCharsets . UTF_8 ) ) ; byteBuffer . flip ( ) ; try ( FileChannel fileChannel = FileChannel . open ( Path . of ( "/tmp/test.txt" ) , StandardOpenOption . CREATE , StandardOpenOption . WRITE ) ) { fileChannel . write ( byteBuffer ) ; } catch ( IOException e ) { e . printStackTrace ( ) ; } System . out . println ( "write success." ) ; } 可以看到,NIO写入文件前,需要先创建ByteBuffer对象,之后再往里面写入数据。写入之后必须调用 flip 方法重新设置position和limit,这也是Buffer中的概念。 之后再创建一个Channel,往Channel中写入数据。 读取文件 public static void readFile ( ) { Ch