IO流操作基本规律总结

1、明确源和目的:
   源:输入流 InputStream   Reader
   目的:输出流 OutStream   Writer
2.操作的数据是否是纯文本
   是  字符流  Reader  Writer
   否字节流   InputStream  OutputStream
3、体系明确后,要确定使用哪个具体对象
   根据设备分
    源设备:内存 硬盘键盘
    目的设备: 内存硬盘 控制台
   根据设备的需求,使用转换流:InputStreamReader  OutputStreamWriter
4、为了提高效率,选择缓冲流:Buffered----

*************************************常见实例分析*******************************
一、将一个文本文件中的数据存储到另外一个文件---字符流文件复制
        源:因为是读取流,所以要用读取流 InputStream  Reader,是文本文件, 确定为Reader;
            明确设备 :硬盘  上一个文件,Reader体系中可以操作文件的对象  FileReader:
            FileReader fr = new FileReader("xx.txt");
            是否要提高效率:是  BufferedReader:       BufferedReader bufr = new BufferedReader(fr);
 
      目的:输出流 OutputStream   Writer         文本文件 :Writer
            明确设备 硬盘  一个新增文件      Writer体系中可以操作文件的对象  FileWriter
            FileWriter fw = new FileWriter("xx_copy.txt");
            是否要提高效率:是  BufferedWriter         BufferedWriter bufw = new BufferedWriter(fw);

2、一个图片文件存储到另外一个文件-----字节流文件复制
        源:因为是读取流,所以要用读取流 InputStream  Reader    图片文件   确定为InputStream
            明确设备 硬盘  上一个文件   Reader体系中可以操作文件的对象  FileInputStream
            FileInputStream fis = new FileInputStream("xx.jpg");
            是否要提高效率:是  BufferedInputStream
            BufferedInputStream bufi = new BufferedInputStream (fis);
 
      目的:输出流 OutputStream   Writer       图片文件 :OutputStream  
            明确设备 硬盘  一个新增文件      OutputStream   体系中可以操作文件的对象  FileOutputStream   
            FileOutputStream  fos = new FileOutputStream("xx_copy.jpg");
            是否要提高效率:是  BufferedOutputStream
            BufferedOutputStream bufo = new BufferedOutputStream (fos);

3、将键盘录入数据保存到一个文件中-----字节流输入
          源:InputStream  Reader      键盘输入是纯文本   Reader
              设备:键盘对应的对象是System.in      
              System.in 对应的是字节流 ,为了操作数据的方便,可以把字节流转换为字符流来操作
              因此需要 把System.in 转换为Reader来操作,因此需要使用Reader体系中的InputStreamReader
              InputStreamReader isr = new InputStreamReader(Syetem.in);
              如果需要提高效率则使用BufferedReader
              BufferedReader bufr = new BufferedReader(isr);
 
        目的:OutputStream    Writer                确定目的是纯文本 所以 使用 Writer
              设备: 硬盘 一个文本文件 所以使用FileWriter
              FileWriter fw = new FileWriter("xx.txt");
              如果要提高效率 则使用BufferedWriter
              BufferedWriter bufw = new BufferedWriter(fw);

4、将一个文本文件打印在控制台上-----字符流输出
         源:InputStream  Reader      文本文件:Reader
             设备:硬盘 一个文本文件      所以使用 FileReader    
             FileReader fr = new FileReader("x.txt");
             是否要提高效率:是  BufferedReader
             BufferedReader bufr = new BufferedReader(fr);
 
        目的:OutputStream  Writer         文本文件:Writer
            设备:控制台 对应的对象是 System.out
             System.out 对应的是字节流 ,为了操作数据的方便,可以把字节流转换为字符流来操作
            因此需要 把System.out 转换为Writer来操作,因此需要使用Writer体系中的OutputStreamWriter
            OutputStreamWriter osw = new OutputStreamWriter(System.out);
           是否要提高效率:是  BufferedWriter
           BufferedWriter bufw = new BufferedWriter(osw);
 
       
 5、拓展一下:如果需要把录入的数据按照指定编码表(utf-8)存入到指定文件中
        目的:OutputStream    Writer  确定目的是纯文本 所以 使用 Writer
        设备: 硬盘 一个文本文件 所以使用FileWriter
       但是FileWriter 使用的默认编码表是GBK,因此,只有通过转换流来指定编码表存入数据
       所以要使用 转换流对象 OutputStreamWriter。
        而该转换流的对象需要接收一个字节数输出流,并且是操作文件的字节输出流:FileOutputStream
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("x.txt"),"UTF-8");
        如果要提高效率 则使用BufferedWriter
        BufferedWriter bufw = new BufferedWriter(osw);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值