课程回顾:
流:数据通信的管道
常用的流类:
1、文件流:File:数据在文件中
1、FileInputStream
2、FileOutputStream
3、FileReader
4、FileWriter
2、内存流:ByteArray:数据在内存中(数组)
1、ByteArrayInputStream
2、ByteArrayOutputStream
3、缓冲流:Buffered:提高读写效率
1、BufferedInputStream
2、BufferedOutputStream
3、BufferedReader
readLine
4、BufferedWriter
newLine
今日内容:
常用的流类:
1、文件流:File:数据在文件中
1、FileInputStream
2、FileOutputStream
3、FileReader
4、FileWriter
2、内存流:ByteArray:数据在内存中(数组)
1、ByteArrayInputStream
2、ByteArrayOutputStream
3、缓冲流:Buffered:提高读写效率
1、BufferedInputStream
2、BufferedOutputStream
3、BufferedReader
readLine
4、BufferedWriter
newLine
4、转换流:用于字节流和字符流之间的转换,可以指定编码格式,处理流,字符流
1、OutputStreamWriter:转换输出字符流
输出字符流----》输出字节流
常用方法:
write:写出,字符
flush:刷新
2、InputStreamReader:转换输入字符流
输入字节流-----》输入字符流
常用方法:
read
skip
5、对象流(Object):可以将各种数据类型的数据写出(序列化)或读取(反序列化)
字节流,处理流
序列化:将对应的类的相关信息和对象的相关内容进行编码的过程,(暂态、静态的不会参与序列化)
反序列化:将序列化的内容进行解析
1、ObjectOutputStream:对象输出字节流
将数据进行序列化保存
常用方法:
writeXXX:写出不同的数据类型的数据
writeObject:写出对象
wirteUTF:写出字符串
2、ObjectInputStream:对象输入字节流
将数据进行反序列化读取
常用方法:
readXXX:读取指定类型的数据
readObject:读取一个对象
readUTF:读取字符串
对象流在使用的时候必须谨记以下两点:
1、对象流只能成对出现(使用对象输出流那么也必须使用对象输入流读取数据)
2、读写顺序必须一致(怎么写的就怎么读取)
writeInt----->readInt
对象流读取到文件末尾引发EOFException异常
当读取的字节数超过文件剩余的字节数时,都会引发EOFException异常
属性不参与序列化的方式:
1、静态的:static
静态的属性不参与序列化
2、暂态的:transient
修饰的属性不参与序列化
当将自定义类进行序列化保存的时候,对应的类必须实现Serializable(序列化接口)
6、打印流(Print):打印各种数据类型的数据,处理流
只有输出,没有输入
1、PrintStream:打印字节流
常用方法:
print:输出各种类型数据
println:输出各种类型数据,并且写出换行符
write:写出,字节
2、PrintWriter:打印字符流
常用方法:
print:输出各种类型数据
println:输出各种类型数据,并且写出换行符
write:写出,字符
三大标准(重定向):
1、标准输入流(InputSTream)
System.in:默认数据来自键盘输入
如果数据来自键盘的话,就读取不到文件的末尾,因为会阻塞的最后一次的read方法
System.setIn:重新设置标准输入的数据来源
2、标准输出流(PrintStream)
System.out:默认将数据输出到控制台
System.setOut:重新设置标准输出的位置
3、标准错误流(PrintStream)
System.err:默认将数据输出到控制台(字体红色)
System.setErr:重新设置标准错误流的位置
7、数据流:
1、DataInputStream
2、DataOutputStream
8、随机读取文件类: