java中的io


  最基本的是根据处理数据类型的不同分为:字符流和字节流

  字节流:数据流中最小的数据单元是字节
  字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节。

  字符流的由来: Java中字符是采用Unicode标准,一个字符是16位,即一个字符使用两个字节来表示。为此,JAVA中引入了处理字符的流。因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表

  最常用的字节流是inputstream和OutputStream,是其他字节流的父类;

  最常用的字符流父类是Reader和Writer,InputStreamReader是一个连接字节流和字符流的桥梁,它将字节流转变为字符流; OutputStreamWriter是OutputStream到Writer转换的桥梁,

  个人在理解这些内容时候认为,电脑中磁盘上存的文件都是以字节形式存储,

  inputstream和OutputStream可以直接去操作这些文件,所以认为其是字节流

  例如  InputStream fis = new FileInputStream("d:/a.txt");

      read = fis.read();
            System.out.println(read);

  而InputStreamReader,OutputStreamWriter等都是需要借助FileInputStream、OutputStream去操作,所以理解其为字符流

  例如  BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("d:/a.txt"),"UTF-8"));
        
            String line = br.readLine();
            System.out.println(line);
       
            while((line = br.readLine())!=null) {
                System.out.println(line);
              }
            br.close();