zoukankan      html  css  js  c++  java
  • 黑马程序员——java IO流

    java中,IO流需要操作系统资源,使用完毕后要释放资源。

    IO流根据操作的数据的类型的不同,可以分为字节流和字符流,

    字符流是基于字节流的。

    字符流的顶层基类是Reader和Writer

    字节流的顶层基类是InputStream和OutputStream

    流是用来操作数据的,数据的最常见形式是文件,字符流针对的是文本文件,字节流针对的是二进制文件(如图片文件)。

    1.FileWriter是Writer的一个子类,创建FileWriter对象后,如果源文件不存在则创建新文件;如果源文件存在则覆盖

    FileWriter有一个重载的构造函数,指定当往文件中写入数据时,是覆盖原数据还是追加数据,如果传入true则追加数据

    其write()方法是把数据写入流中,只有执行了flush()方法后,才能把数据添加到文件。

    close()方法,在关闭资源之前也会执行flush()方法。

    2.FileReader是Reader的一个子类,其read()方法每次读取一个字符,当读到末尾时返回-1;第二种读取方式是给read()方法

      传入一个字符数组,返回独到的字符个数,当读到末尾时返回-1

    3.IO流中的缓冲区是为了提高流的操作效率的。当关闭缓冲区时,也就关闭了其所缓冲的流对象

       (1)bufferedWriter

          使用方式:只要将要提高效率的流对象作为参数传递给缓冲区的构造函数即可。

            也要执行flush()或者close()方法,才能把数据谢大目的地

            它有一个newLne()方法,是跨越操作系统的换行符。

      (2)bufferedReader

          使用方式与bufferedWriter类似

           它有一个readLine()方法,一次读取一行数据,如果读到末尾,返回null

          readLine()原理:无论是读一行,获取多个字符,最终都是在硬盘上一个一个读取,所以最终使用的还是read方法一次读一个的方法.readLine()方法是在读到

          " "时认为读完一行(Windows系统下),然后将数据返回。

      (3)装饰模式是在原有类的基础上增强其功能,

        装饰模式中,我们可以把被装饰类的父类当作参数传进装饰类的构造方法内,那么你这一个装饰类就可以应用于这个体系的了,这也是java多态性的好处.
        相比较之下使用装饰模式降低了类之间的关系。装饰类是因为增强了已有的对象,具有的功能和已有的是相同的,是不过提供了更强的功能,所以装饰类和
          被装饰类通常属于一个体系中的。

      4.字节流的两个顶层基类是:InputStream(读),OutputStream(写)

           OutputStream的write()方法不需要flush()数据就已经写入到目的地了。

          这是一个字符缓冲输出流,该类保持对行号的跟踪,可以通过该类的setLineNumber(int)和getLineNumber(int) 方法分别设置和获取行号

    5.  将字符流转对象化为字节流对象,使用转换流:InputStreamReader(字节通向字符的桥梁)

         OutputStreamWriter(字符通向字节的桥梁),也就是读进来的是字符,写进去的是字节,只有转换流能够指定编码表

    6.总结IO操作的规律:通过两个明确来完成:
          (1)明确源和目的
              源: 输入流:InputStream,Reader
              目的:输出流:OutputStream,Writer
          (2)明确操作的额数据是否是纯文本
               是:字符流
               不是:字节流
          (3)当体系明确之后,再明确要使用那个具体对象
                通过设备来进行区分
                源设备:内存(数组流),硬盘(文件流),键盘(System.in)
               目的设备:内存(数组流),硬盘(文件流),控制台(System.out)  

  • 相关阅读:
    《Windows编程循序渐进》——对话框应用程序2
    《Windows编程循序渐进》——对话框应用程序
    《Windows编程循序渐进》——建立MFC应用程序
    关于基类和子类构造函数的问题
    《Windows驱动开发技术详解》之分层驱动程序
    《Windows驱动开发技术详解》之驱动程序调用驱动程序——通过设备指针调用其他驱动程序
    《Windows驱动开发技术详解》之驱动程序调用驱动程序——以文件句柄形式调用其它驱动程序
    《Windows驱动开发技术详解》之定时器
    《Windows驱动开发技术详解》之自定义StartIO
    四种UNIX实现
  • 原文地址:https://www.cnblogs.com/wdsthink/p/4372904.html
Copyright © 2011-2022 走看看