【笔记整理】
一:什么是IO?
JAVA IO:
I:指得是Java的输入。
o:指的是Java的输出。
当从外面读取数据到自己这里就用输入(InputStream/Reader),
向外面写数据就用输出(OutputStream/Writer).
Stream:Java中将数据的输入输出抽象为流,流是一组有顺序的,单向的,有起点和终点的数据集合。
按数据单元又分为字节流和字符流。
先确定一个概念:一切皆字符(任何数据都是以二进制的形式储存的)。
字节流:1byte(8bit)作为一个数据单元,数据流中最小的数据单元是字节。
字符流:1char(16bit)作为数据单元,数据流中最小数据单元是字符。
字节流的抽象基类:
InputStream
OutputStream
字符流的抽象基类:
Reader;
Writer
由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀,如InputStream的子类FileInputStream,Reader的子类FileReader。
按节点方式分:节点流和处理流
节点流:真正直接处理数据。
有文件流:FileInputStream,FileOutputStrean,FileReader,FileWriter
数组流:ByteArrayInputStream,ByteArrayOutputStream,CharArrayReader,CharArrayWriter
字符串流:StringReader,StringWriter
管道流:PipedInputStream,PipedOutputStream,PipedReader,PipedWrite
处理流:装饰加工节点。
有缓存流:BufferedImputStrean,BufferedOutputStream,BufferedReader ,BufferedWriter
转换流:InputStreamReader,OutputStreamWriter
数据:DataInputStream,DataOutputStream
File 类:文件和目录路径名的抽象表示。
File 直接继承于Object,实现了Serializable接口和Comparable接口。实现Serializable接口,意味着File对象支持序列化操作。而实现Comparable接口,意味着File对象之间可以比较大小;File能直接被存储在有序集合(如TreeSet、TreeMap中)。
创建文件名
File的构造方法:
使用:
结果为:
相对路径和绝对路径:
绝对路径:永远指的是固定位置文件夹,从盘符开始,是一个完整的路径,例如:
相对路径:相对于项目目录路径,是一个不完整的便捷路径,在Java开发中常用
序列化技术和反序列话技术:
序列化技术:将程序的对象直接一文件形式存储起来,是按照对象的内存中存储的字符序列。
反序列技术:反过来。
想要序列化要有标记,一个接口
这个叫标记接口,就是为了告诉BOOK属于Sreializable的子,其实没有提供任何的抽象方法。
这样就可以运行了,然后出现这个,这个不是你能看懂的。
输出结果: