=======I/O==========================================================================
File:代表了磁盘上的文件或者目录
I/O:jvm和外部数据源的数据交换。File,db—in-àjvm---out-àfile,db
流一共有三种分类:
方向分:输入流和输出流;
单位分:字节流和字符流;
字节流:
InputStream/OutputStream 字节流的父接口
(1)FileInputStream/FileOutputStream 文件字节流 ((可以向下转换))
DataInputStream/DataOutputStream 读写8种基本类型和以UTF-8读写String
BufferedInputStream/BufferedOutputStream 带缓冲的输入/出流
PrintStream 融合Data和Buffered, System.out所属的类
Piped 管道 用于线程间交换数据
RandomAccessFile 随机访问文件
字符流:处理字符编码问题
Reader/Writer 字符流的父接口
FileReader/FileWriter 文件字符流,和FileInputStream/FileOutputStream 文件流,
((可以向下转换)) 与上面的(1)是相等,
只不过一个是字节流,下面是字符流,所以两个无法相传
InputStreamReader/OutputStreamWriter桥转换 将字节流转成字符流 在桥转换的过程中,可以制定编解码方式
BufferedReader/PrintWriter 有缓冲
字符流转换为字节流时,指定编解码方式是在桥转换时指定的。
功能分:节点流和过滤流;
节点流:用于传输数据。
过滤流:帮助节点流更好的传输数据。
piped(管道节点流):用于两个线程间传输数据。一个线程的输出,是另一个线程的输入。
对象序列化:
把对象放在流上传输ObjectInputStream/ObjectOutputStream
只有实现了Serializable接口的对象才能序列化
用transient修饰的属性,为临时属性,不参与序列化,只能修饰对象的属性。