这段时间学习JAVA的流类,感觉各种流五花八门看得眼花,特此简单整理。

      JAVA的I/O流库提供大量的流类(java.io)。其中,所有输入流是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类,而所有的输出流类都是抽象类OutputStream(字节流)和抽象类Write(字符流)的子类。

  字节流:

   - FileInputSrteam

    功能为从文件中以字节的形式读取数据,利用 .read()方法将读取的字节返回,终止标志为-1返回值。

   - FileOutputstream

    功能为将内存中的数据以字节流的形式送到目标文件,利用 .write(byte [] b)方法输送字节到数组b,

   - System.in

    一个很原始的字节流(个人感情因素。。。),是System的一个类成员,原型为

     public final static InputStream in = nullInputStream();

    指向的源为标准输入:键盘

   - System.out

    同样是一个很原始的字节流。。。。

     public final static PrintStream out = nullPrintStream();

    输出的目的地是屏幕文本

  字符流:

   字节流本身的局限性是不能直接操作Unicode字符,例如汉字是占用两个字节空间,使用字节流读取不当有可能发生乱码现象。因此JAVA提供了比较高级的字符流来处理,在Unicode中一个汉字占据一个字符,因此可以保证正确处理。

  - FileReader

   抽象类Reader的子类,从制定目标按字符读取数据,顺序读取文件中的字符直至流关闭。

     public class FileReader extends InputStreamReader

  - FileWrite

   抽象类Write的子类,以字符形式输送数据到目的地直至流关闭。

     public class FileWriter extends OutputStreamWriter

 -------------------------------------------------------------------------------------

    System.in是指向键盘的字节输入流,如果我们需要从键盘读取字符,可以在.in流上“套一根管子”。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 利用.in来构造一个字符流的“管子”。这样从键盘就能以字符的形式读入数据。