随机访问流
NIO流
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
public class NIODemo {
/**
*
* @author blue
*
* @date 2020年8月10日
*
*/
public static void main(String[] args) {
// 1获取节点流对象
// 2通过节点流获取通道
// finally中关闭流注意先开后关 先关 channel 再关闭节点流
try ( FileChannel inputchannel=new FileInputStream("E:\\test\\test.txt").getChannel()) {
// 3创建缓冲区
ByteBuffer buffer = ByteBuffer.allocate(1024);
// 4文本文件 创建解码器 将字节解码为字符
// newDecoder: 解码器对象
// newEncoder: 编码器对象
CharsetDecoder decoder = Charset.defaultCharset().newDecoder();
// 5循环将通道中的数据读取到缓冲区 -1 读取结束
while ((inputchannel.read(buffer)) != -1) {
// 6flip()为从buffer中读取数据做准备 指针定位到缓冲区开始的地方
buffer.flip();
// 7对缓冲区数据进行解码
CharBuffer charBuffer = decoder.decode(buffer);//字节转字符
System.out.println(charBuffer.toString());
// 8清空缓冲区 为再次从Buffer中读取数据做准备
buffer.clear();
}
} catch (IOException e) {
}
}
}