Java

Java 21-7 IO流规律总结

2019-02-02  本文已影响0人  第二套广播体操

解决开发中使用哪个流对象的问题
1.明确数据源,数据汇(数据目的)
其实就是在明确要使用的io体系 InputStream OutputStream Reader Writer
操作的是源 那么就需要读取
操作的是汇 那么就需要写入
2.操作的数据 是否是纯文本数据 是为字符流 否在字节流
是 并且是源 Reader
是 并且是目的 Writer

3.明确要操作的具体设备 每个设备都有对应的流对象
源:
硬盘 能操作文件的流对象都是 File开头
键盘 System.in
内存 数组
网络 socket流
目的:
硬盘 能操作文件的流对象都是 File开头
内存 数组
网络 System.out
显示器 socket流
4.额外功能
缓冲区 Buffered开头
转换流


需求1: 通过键盘录入数据 并保存到一个文件中

明确1:有源 有目的吗
源使用 InPutStream Reader
目的使用 OutPutStream Writer

明确2: 是纯文本数据吗 是
源 Reader
目的 Writer

明确3:具体设备
源设备System.in
目的设备硬盘
IuputStream is=System.in
FileWriter fw=new FileWriter("a.txt");
将读取的字节存储到数组中 read(byte[])
将字节数组转化成字符串
通过fw.write(String)写入文件中
麻烦 明确源是Reader

明确4:需要功能吗?
需要字节转字符 InputStreamReader
InputStreamReader isr= new InputStreamReader(System.in);

需要额外功能吗?
需要(out带缓存需要刷新)
BufferedReader bufr =new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bwfw=new BufferedWriter(new FileWriter("a.txt"));

readLine();
bufw.write(); bufw.flush();


需求2:读取文本文件中的数据 将其打印到控制台上
明确1:有源 有目的
源:InputStream Reader
目的 OutputStream Writer

 明确2:是纯文本
 源:Reader
 目的:Writer

 明确3:具体设备
 源设备 :硬盘 File
 目的设备:显示器 System.out

 FileReader fr=new FileReader("a.txt");
 OutputStream ops=System.out;
 fr读取数据到数组中。将数组文件打印到显示器

 源是字符数据 所以通过字符流操作  通过字符转成字节流 给显示器

 明确4:额外功能
 字符转换到字节
  FileReader fr=new FileReader("a.txt");
 OutputStreamWriter osw=new OutputStreamWriter(System.in);
 高效
 BufferedReader bufr=new BufferedReader(new FileReader("a.txt"));
 BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(System.out));
 读取一行数据
 写入一行数据

转换流 InputStreamReader OutputStreamWriter

上一篇下一篇

猜你喜欢

热点阅读