I/O 工作原理
磁盘I/O
tips: DMA:全称叫直接内存存取(Direct Memory Access),是一种允许外围设备(硬件子系统)直接访问系统主内存的机制。基于 DMA 访问方式,系统主内存与硬件设备的数据传输可以省去CPU 的全程调度
特点
-
读写操作基于系统调用实现
-
读写操作经过用户缓冲区,内核缓冲区,应用进程并不能直接操作磁盘
-
应用进程读操作时需阻塞直到读取到数据
网络I/O
特点
-
网络I/O读写操作经过用户缓冲区,Sokcet缓冲区
-
服务端线程在从调用recvfrom开始到它返回有数据报准备好这段时间是阻塞的,recvfrom返回成功后,线程开始处理数据报
字节流
在上一篇中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据。现在我们就要开始给文件中写数据,或者读取文件中的数据
字节输出流OutputStream
OutputStream此抽象类,是表示输出字节流的所有类的超类。操作的数据都是字节,定义了输出字节流的基本共性功能方法 输出流中定义都是写write方法
FileOutputStream类
OutputStream有很多子类,其中子类FileOutputStream可用来写入数据到文件 FileOutputStream类,即文件输出流,是用于将数据写入 File 的输出流
将数据写到文件中
/**
* 将数据写到文件中
*/
public static void test1() throws IOException {
// 创建存储数据的文件
File file = new File("e:\\file.txt");
// 创建一个用于操作文件的字节输出流对象。一创建就必须明确数据存储目的地。
// 输出流目的是文件,会自动创建。如果文件存在,则覆盖。
FileOutputStream fos = new FileOutputStream(file);
// 写入数据
byte[] data = "abcd