java io基础学习一

IO(input output)

流按操作数据分为两种:字节流与字符流

  字符流:字节流读取文字字节数据后,不直接操作而是先查指定的编码表。获取对应的文字,

      在对这个文字进行操作。简单说:字节流+编码表

流按流向分为:输入流,输出流

  将外设中的数据读取到内存中---输入

  将内存的数写入到外设中---输出

字节流的抽象基类(两个顶层父类):

缓冲区:byte

  基本操作与字符流相同,不仅可以操作字符,还可以操作其他媒体文件   

  1.InputStream

    FileOutputStream

      

  2.OutputStream:字节输出流对象

    FileOutputStream

    不需要使用flash()

字符流的抽象基类(两个顶层父类):这些体系的子类都以父类名作为后缀。

缓冲区char

  1.Reader(读-输入)

    在创建读取对象时,必须明确被读取的文件,一定要确定文件是存在的

    FileReader fr = new FileReader("dome.txt");

    //用Reader中read方法读取字符

    fr.read(); 

    fr.read(char []);

  2.Writer(写)输出)

    如果构造函数中加入true,可以实现对文件进行续写

    FileWriter fw = new FileWriter("dome.txt",true);

    FileWriter fw = new FileWriter("dome.txt");

    fw.writer("aaa");

    //数据会写入到临时存储的缓冲区中

    //运行刷新,数据才会写入到目标文件中

    fw.flush();

    //关闭流,关闭资源,在关闭前会先调用flush刷新缓冲中的数据到目标文件

    fw.close();  //!!!!!!!!!!!!!!

   

字符流的缓冲区:缓冲区的出现提高了对数据的读写效率

对应类:

  BufferedWriter

    newLine()

  BufferedReader

    readLine():使用读取缓冲区的read方法,将读取到的字符进行缓冲并判断换行标记,

          将标记的缓存数据变成字符串返回。

  !--LineNumberReader()

   .getLineNUmber() 获取行 

装饰设计模式:

  对一组对象的功能进行增强时,就可以使用该模式进行问题的解决。

装饰和继承都能实现一样的特点:进行功能的扩展增强。

  

    

原文地址:https://www.cnblogs.com/wangxh92/p/3734570.html