处理流
缓冲流
作用:增加缓冲区,提供效率
类型
BufferedInputStream
包装InputStream
例如:FileInputStream、DataInputStream、ObjectInputStream等
BufferedOutputStream
包装OutputStream
例如:FileOutputStream、DataOutputStream、ObjectOutputStream等
BufferedReader
包装Reader 例如:FileReader、InputStreamReader等
String readLine() 判断是否读完,使用 ==null
BufferedWriter
包装Writer 例如:FileWriter,OutputStreamWriter等
write(String) + newLine()
缓冲区的大小
字节流 8192字节
字符流 8192字符
数据流
作用:可以处理Java的基本数据类型+字符串(UTF-8修改版)
类型
DataOutputStream
writeXxx()
writeInt(int)
writeDouble(double)
writeChar(char)
writeUTF(String)
DataInputStream
readXxx()
int readInt()
double readDouble()
char readChar()
String readUTF()
注意
(1)DataOutputStream写,用DataInputStream读取
(2)写的顺序和读的顺序要一致 写与读之间需要配置文件等形式进行沟通顺序和类型
对象流
作用:可以处理Java对象等
类型
ObjectOutputStream
writeObject(Object)
对象序列化
ObjectInputStream
Object readObject()
对象反序列化
注意
(1)凡是要序列化的对象,它的类型必须实现java.io.Serializable接口
否则会报:NotSerializableExecption
(2)如果属性涉及到其他的引用数据类型,那么这个类型也必须实现java.io.Serializable接口
(3)如果某个属性不想要序列化,那么可以在属性之前加transient
一旦加了这个关键字修饰,该属性的值会在序列化的过程中,被忽略
一旦加了这个关键字修饰,该属性在反序列化的过程中,它的值就赋默认值
(4)在实现java.io.Serializable接口时,最好加一个常量:序列化版本ID
private static final long serialVersionUID = 1L;
(5)静态的属性不能序列化
打印流
作用:可以打印各种类型的数据,最终都是以字符的形式打印,如果是引用数据类型,就调用它的toString()
类型
PrintStream
代表 System.out
方法 print(xxx) println(xxx)
PrintWriter
方法 print(xxx) println(xxx)
NIO(了解)
Non - Blocking IO 非阻塞式IO
NIO和IO的区别
区别一
IO是面向流,是单向的,从某个流中要么只能读,要么只能写
NIO是面向通道+缓冲区,即可以是单向的,又可以是双向的
区别二
IO是阻塞式的,一旦某个线程在读,此时没有可读的数据,会一直等待
NIO是非阻塞式
区别三
NIO可以使用选择器
标签:属性,NIO,处理,xxx,IO,序列化,String From: https://www.cnblogs.com/woniupa/p/17185052.html