有不明白的可以M我
为黑马奋斗的人们多加交流
如果里面有错误 大家知道的帮指出来 以免我误人子弟 那就罪过啦
流的体系
后缀 Stream 字节流
Writer reader 字符流
字符流
FileReader
FileWriter
BufferedReader
BufferedWriter
转换流(字节流+ 编码表)
InputStreamReader 字节转字符
OutputStreamWriter 字符转字节
字节流
FileInputStream
FileOutputStream
BufferedInputStream
BufferedOutputStream
File
PerintStream
PerintWriter
PerintStream
out.writer 写一个字节(int 的其他3个字节则丢了) 所以97 和 609 都为写出a
out.println(97) 写了四个字节 9 7 \r \ t
out.print(97) 写了2个字节 9 7
print 保证数据形式的原样输出(要打印的是什么 输出后还是什么不变)
--------------------------------------------
流对象很多 开发时到底使用哪个
流的操作规律
四个明确
1.明确操作的是数据源还是数据目的(明缺流的体系)
源:读取 InputStream Reader
目的;写入 OutputStram Writer
2.明确数据内容是否是纯文本
源:纯文本 Reader(文本操作快捷)
不是纯文本 就用InputStream
目的;纯文本 Writer(文本操作快捷)
不是纯文本 就用 OutputStram
到这里可以明确源或者目的具体要用的哪个体系
3.明确数据所在的设备
源设备:硬盘 File流
内存 数组
键盘 system.in
网络 socket
目的设备: 硬盘 File流
内存 数组
显示器(控制台)system.out
网络 socket
4.是否需要额外功能
高效 Buffer
编码转换 通过转换流、所以目的要变化
序列化 ObjectInputStream ObjectOutputStream
保证数据类型的表现形式 打印流的打印方法
基本数据类型转换 DateInputStream DateOutputStream
write(int)
writeInt(int)
需求:复制一个文本文件
确定源和目的
源:InputStream Reader
目的; OutputStram Writer
明确源和目的是否是纯文件
是的
源 Reader
目的 Writer
明确设备
源 硬盘
目的 硬盘
FileReader fr= new FileReader("a.txt")
FileWriter fw = new FileWriter("b.txt")
FileWriter(使用的中文版JDK使用的是GBK码表)
如果对文字进行过滤 (例如论谈非法文字)
如果使用上面的字节可以过滤 如果使用字符则不能过滤
需求:高效复制一个文本文件
BufferedFileReader fr= new BufferedFileReader( new FileReader("a.txt"))
BufferedFileWriter fw = new BufferedFileWriter( new FileWriter("b.txt"))
需求:高效复制一个文本文件(用UTF - 8)输出
FileReader fr= new FileReader("a.txt")
//OutputStreamWriter osw = new OutputStreamWriter();
BufferedFileWriter fw = new BufferedFileWriter(new FileOutputStream(new FileWriter("b.txt","UTF-8")))
|
|