一、先搞懂这两对核心概念:同步 / 异步 vs 阻塞 / 非阻塞 在深入探讨 IO、NIO 和 BIO 之前,我们得先把两对非常重要的概念搞清楚,这两对概念可是理解它们的基石,即同步 / 异步与阻塞 / 非阻塞。很多人在学习这…
Java IO即Java 输入输出系统。不管我们编写何种应用,都难免和各种输入输出相关的媒介打交道,其实和媒介进行IO的过程是十分复杂的,这要考虑的因素特别多,比如我们要考虑和哪种媒介进行IO(文件、控制台、网络),我们还要考虑具体和它们的通信方式(顺序、随机、二进制、按字符、按字、按行等等)。Java类库的设计者通过设...
java的I/O操作在类的java.io包中 基于字节操作的I/O接口: InputStream和OutputStream 基于字符操作的I/O接口: Writer和Reader 基于磁盘操作的I/O接口: File 基于网络操作的I/O接口: Socket(网络编程,不在io包中) 普通IO 字节流对应原生的二进制数据 字符流对应字符数据,会自动处理与本地字符集之间的转换 缓...
下面是Java IO发展史的简要介绍: JDK 1.0(1996年) 最初的Java IO只支持字节流(InputStream、OutputStream)和字符流(Reader、Writer)两种,基于阻塞式IO(BIO)模型。 JDK 1.1(1997年) JDK 1.1引入了NIO(New IO)包,支持了缓存区(Buffer)、通道(Channel)等概念,提供了更高效的IO操作方式,可以实现非阻塞式IO(NIO...
IO 是主存和外部设备 ( 硬盘、终端和网络等 ) 拷贝数据的过程。 IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成。 所有语言运行时系统提供执行 I/O 较高级别的工具。 (c 的 printf scanf,java 的面向对象封装 ) 2. Java 标准 io Java 标准 IO 类库是 io 面向对象的一种抽象。基于本地方法的...
上面的也是 Java IO流中的四大基流。这四大基流都是抽象类,其他流都是继承于这四大基流的。 1) 字节流:数据流中最小的数据单元是字节 2) 字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节(无论中文还是英文都是两个字节)。 三、根据功能分为节点流和包装流 节点流...
IO操作包括:对硬盘的读写、对socket(网络)的读写以及外设的读写。阻塞IO:当用户线程发起一个IO读请求操作,首先查看要读取的数据是否就绪,如果数据没有就绪,则会一直在那等待,直到数据就绪;非阻塞IO:当用户线程发起一个IO读请求操作,首先查看要读取的数据是否就绪,如果数据没有就绪,则会返回一个标志信息...
与字节输入流类似,java.io 包下所有字节输出流大多是从抽象类 OutputStream 继承而来的。OutputStream 提供的主要数据操作方法:void write(int i):将字节 i 写入到数据流中,它只输出所读入参数的最低 8 位,该方法是抽象方法,需要在其输出流子类中加以实现,然后才能使用。void write(byte[] b):将数组 ...
Java IO:即 Java 输入/输出系统。大部分程序都需要处理一些输入,并由输入产生一些输出,因此Java为我们提供了 java.io 包 作为一个合格的程序开发者,说到 IO 我们并不会陌生,JAVA IO 系统的知识体系如下: 看完以上的图,才会恍然,原来 Java.io 包中为我们提供了这么多支持。而我们恍然的同时也不必感到惊慌,俗话...
Java IO流——【从零构建信息管理系统】