java学习I/O系统
2020-06-06 10:05:34
1.File类既能够代表一个特定的文件名称,又能够代表一个目录下的一组文件的名称;它有一定的误导性,我们可能认为它指代的是文件,这个类的对象实例表示的只是一个抽象的文件或目录,当程序创建了一个File类的对象时,并没有真正的创建或准备创建一个文件,也不会去打开对应的文件,只是获取了文件的相关信息,所以也不需要像文件流那样需要关闭
2.流代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象,它屏蔽了实际I/O设备中处理数据的细节
3.输入,将外部数据存放到程序中,输出,将程序中的数据存放到外部存储中
4.数据是载荷或记录信息的按一定规则排列组合的物理信号,可以是数字,图像,文字,也可以是计算机代码
5.数据的分类
流式数据,只能以事先规定好的顺序被读取一次的数据的一个序列
文件数据,封装在一起的一组数据,文件的分类,从应用的角度,可以分为程序文件和数据文件;从用户的角度,可以分为普通文件和设备文件;从文件的读写方式,可以分为顺序文件和随机文件,从文件的数据组织方式,可以分为文本文件和二进制文件
6.流的特点是数据的获取和发送是沿着数据序列的顺序进行,每一个数据都必须在它前面的数据被处理完成后才能够被处理,每次读写操作都是序列中未处理数据中的一个,而不能够随意的选择输入和输出的位置,流中的数据既可以是原始的二进制数据,也可以是经过编码处理的某种特定格式的数据
7.流分为两类,字节流,一次读写8位二进制数;字符流,一次读写16位二进制数
8.在Java中,可以从其中读入一个字节序列的对象称作输入流,而可以向其中写入一个字节序列的对象称作输出流
9.java I/O的分类
基于字节操作的I/O接口:InputStream和OutputStream
基于字符操作的I/O接口:Writer和Reader
基于磁盘操作的I/O接口:File
基于网络操作的I/O接口:Socket
前两组主要是根据传输数据的数据格式,后两组主要是根据传输数据的方式
10.DataInputStream和DataOutputStream类的数据都是以二进制的形式处理
11.对象序列化的目标是将对象保存到磁盘中,或允许在网络中直接传输对象。对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久的保存在磁盘上,通过网络将这种二进制流传输到另一个网络节点。其他程序一旦获得了这种二进制流,都可以将这种二进制流恢复成为原来的Java对象
12.序列化机制使得对象可以脱离程序的运行而单独存在
13.新IO将文件或文件的一块区域映射到内存中
14.面向流的输入/输出系统一次只能够一次处理一个字节,因此它的效率不高
15.计算机中的文件,数据,图片文件都是表象,所有文件的底层都是二进制文件,即全部都是字节码
16.编码,将明文的字符序列转换成为计算机理解的二进制码,解码,将二进制码转换为普通人能够理解的明文字符