IO流操作的规律

一、IO流操作规律

1、总结

IO流操作中,首先要明确开发中具体要使用哪个流对象。

2、明确流对象步骤

1,明确数据源,数据汇(数据目的)
其实就是在明确要使用的IO体系。InputStream outpurStream  Reader Writer
需求中操作的是源:意味着是读,
   InputStream Reader
需求中操作的是目的:意味着是写
   OutputStream Writer
    
    2,明确操作的数据是否是纯文本数据
是:字符流
否:字节流


是并且是源:Reader
是并且是目的:Writer


    3,明确要操作的具体设备。每个设备都有对应的流对象
        源设备:
   硬盘:能操作File的对象都是,File开头的
   键盘:System.in
   内存:数组
   网络:socket流


目的设备:
   硬盘:能操作File的对象都是,File开头的对象
   显示器:System.out
   内存:数组
   网络:socket流


    4、明确是否需要额外的功能
需要高效:缓冲区,Bufferd开头的
需要编码转换:转换流


二、IO流操作规律应用

1、应用一

需求:通过键盘录入数据,将数据保存到一个文件中。


   明确一:有源吗?有,有目的吗?有
   源:InputStream Reader
   目的:outStream Writer
   
   明确二:是纯文本数据吗?是
   源:Reader
   目的:Writer
   明确三:具体设备
   源设备:键盘(System.in)
   目的设备:硬盘


   InputStream is = System.in;
   FileWriter fw = new FileWriter("a.txt");
   //将读取到的字节存储到数组 read(byte[])
   //将字节数据转成字符串
   //通过fw.write(string)写入到文件中


   但是很麻烦,因为明确源是Reader。需要将字节流转成字符流,这样操作文字就便捷了。


   明确四:需要功能吗?
   需要,转换  字节-->字符  InputStreamReader
   InputStreamReader isr = new InputStreamReader(System.in);
   FileWriter fw = new FileWriter("a.txt");
   //一次读取一个字符
   //将读到的字符写入。
   //当然也可以定义字符数组缓冲区。
   需要其他功能吗?
   需要:高效 Buffered


   BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
   BufferedWriter bufw = new BufferedWriter(new FileWriter("a.txt"));


2、应用二

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


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


   明确三:具体设备
   源设备:硬盘
   目的设备:显示器 (System.out)


   FileReader fr = new FileReader("a.txt");
   OutputStream(PrintStream) out = System.out;


   //fr读取数据到数组中。
   //使用PrintStream 直接调用Println方法就可以打印了,如果使用OutputStream可以调用write方法就可以将数据写入到显示器中


   //麻烦
   
   因为源都是字符数据,可以通过字符流操作,将字符流转成字节再给显示器
   
   明确四:需要额外功能吗?
   需要转换 字符-->字符
   FileReader fr = new FileReader("a.txt");
   OutputStreamWriter osw = new OutputStreamWriter(system.out);


   还需要其它功能吗、
   需要高效
   BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));
   BufferedWriter bufw = mew BufferedWriter(new OutputStreamWriter(system.out));


   //读取一行数据
   //写入一行数据

猜你喜欢

转载自blog.csdn.net/biedazhangshu/article/details/49307013