关于io的总结
2022-06-29 10:25 没有波澜的天空 阅读(48) 评论(0) 编辑 收藏 举报一、io模型
同步阻塞模型:
同步非阻塞模型:
异步非阻塞模型:
异步阻塞IO:
二、直接io(操作系统io)(以linux io为例)
linux io分为同步io,异步io
其中同步io分为同步阻塞io、同步非阻塞io、io多路复用(也是同步阻塞的)
其中io多路复用当前用户最广
io多路复用有三种实现方式,分别是select、poll、epoll
三、缓冲io(以java io为例)
BIO(Blocking IO)是同步阻塞式的IO模型,面向流操作,保证顺序,如JDK1.4之前的传统IO操作。
NIO(New IO)是同步非阻塞式的IO模型,面向缓冲区,提供Channel,Buffer,Selector等抽象,如JDK1.4引入的IO操作。
AIO(Asynchronous IO)是异步非阻塞式的IO模型,如JDK1.7引入的IO操作。
java io(bio)读取文件实例:
try {
String path = "D:\\iotest.txt";
File file = new File(path);
FileInputStream in = new FileInputStream(file);
Reader reader2 = new InputStreamReader(in);
BufferedReader bufferedReader = new BufferedReader(reader2);
String line;
while((line=bufferedReader.readLine())!=null){
System.out.println(line);
}
bufferedReader.close();
} catch (Exception e) {
}
java io(nio)读取文件实例:
try {
FileInputStream fis = new FileInputStream("1.jpg");
FileChannel fisChannel = fis.getChannel();
// 分配指定大小的缓冲区
ByteBuffer buf = ByteBuffer.allocateDirect(1024);
// 将通道中的数据存取缓冲区
while (fisChannel.read(buf) != -1) {
// 读取信息
buf.flip();
buf.clear();
}
} catch (Exception e) {
e.printStackTrace();
}
java io(aio)读取文件实例:(aio的类库也包含在java.nio中)
四、java io 和linux io的对应关系
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架