java自学日记三

                                         java基础之IO流(续集)

   一、字符流的缓冲区

        1、简述

            出现原因:为了提高操作数据的效率;

            它是结合流来使用的,对流的功能加强;

            对应的类:BufferedWriter、BufferedReader;

          2、使用

            思路:a.要想使用它,就得先创建一个流;

                       b.使用缓冲区:将创建好的流进行封装,就是讲这个流作为参数,放入这个缓冲对象的构造函数                             中;

                       c.遇到缓冲区就得刷新,同时,还要关闭缓冲区,这就相当于关闭了流资源;

                注意:跨平台的换行符:void newLine();这个方法是缓冲流的;

        3.具体代码的应用:

    

        A.  BufferedWriter:

       

     B.   BufferedReader:

    

    C.文件的拷贝:

           注意:a----- readLine方法不包含任何行终止符;                                                                                                                   b-----readLine方法它的原理其实就是调用的read方法,只不过是读取完一行才将其fanhui

       d.自建一个缓冲区(也算是一次读一行的方法)

      

       e.装饰设计模式:

       当想要对已有的对象进行功能增强时,自定义一个类,将已有对象传入,基于已有的功能并提供加强功能,那么自定义的该类就是装饰类。

    装饰类一般是通过构造方法将已有对象作为参数传入,然后在定义类中创建一个方法,再添加一些功能;

而后调用已有对象的初级方法就形成了一个具有强大功能的方法。

 示例代码如下:

    

      }      

  

    f.包装类与继承的区别:

         包装类其实就相当于一个专业的加工工厂,什么都加工;如果让这个工厂属于一个部门的话(继承),公司加了一个新的部门(新子类)也要加工东西,要么就得在这个新部门自己建一个加工工厂(自己再建一个装饰类),要么就得协调公司来共同用一个;所以如果将这个加工工厂独立起来的话(不用去继承,单独一个类),就不用麻烦了,直接去加工工厂就可以了(直接去调用),方便独立,不会与其他部门产生联系。当然这个加工工厂也属于这家公司,即他们是一个系统的。

      g.自定义一个带行号的缓冲区对象

             这个缓冲区对象的应用代码如下:

      

       自定义的代码如下:(当然可以继承上面的那个自定义的MyBufferedReader)

   

      二、字节流

            1、简述要点与注意事项

                两基类:inputStream 、 outputStream

                 用于操作图片数据;

                 windows中的回车是由“\r\n”组成的;(所以在上述的一个方法中最好还是加上那个\r\n的判断)

                 字符流中的那个数组为char类型,而字节流中的为byte类型数组;

                 示例代码:

        

     2、复制图片

          复制图片使用的是字节流,要是使用字符流的话,图片有可能没办法显示;这个原理同复制文件,只不过是        用字符流。代码如下:

     

         3.复制MP3文件

                这里也可用缓冲区对象来做,建立BufferedInputStream、BufferedoutputStream;这两个也有自己的read方            法继承的;

       

   4.   缓冲区的read原理:

       显示代码如下:

                

      5.   读取键盘录入  

               

        6.转换流的出现

          

      7.键盘输入屏幕输出

       

     8.流对象的操作规律

           要明确的三个条件:源和目的、操作的文件是什么、选用体系的哪个对象

             ---源与目的:源就是输入(读取)流 ;inputStream、reader

                                    目的就是输出(写入)流;outputStream、writer

             ---文件:是否纯文本文件

                           是:用字符流

                           否:用字节流

            ---体系明确后使用的对象:

                     通过设备来区分:

                   源:内存、硬盘、键盘

                   目的:内存、硬盘、屏幕(控制台)

        例如:1、文本文件

                   源    :文件;使用读取流、reader;由于操作文件就用:FileReader;

                   目的:文件;使用写入流、writer;由于操作文件就用:FileWriter;

                   2.非文本文件

                  源    :文件;使用读取流、InputStream;由于操作文件就用:File

InputStream;

                  要是从控制台输入的话就是用System.in;

                 目的:文件;使用写入流、OutputStream;由于操作文件就用:File

OutputStream;

                 要是从控制台输出的话就是用System.out;

          注意事项:要是提高效率的话,就得采用缓冲流;

                            在存储的时候需要按照要求的编码来写入,只有转换流有;即就是解码的过程;

        9.异常日志信息的报告

        代码如下:

                    

    10.系统信息的输出

          

                            

                

           

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值