您的位置:首页 > 其它

IO流操作基本规律总结

2012-04-04 11:44 295 查看
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  io 存储