码迷,mamicode.com
首页 > 其他好文 > 详细

InputStream 、 InputStreamReader 、 BufferedReader区别

时间:2018-09-29 20:32:45      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:def   返回   fileinput   方式   txt   字符   stat   输出流   stream   

区别介绍:
1、InputStream、OutputStream

处理字节流的抽象类

InputStream 是字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream等.

OutputStream是字节输出流的所有类的超类,一般我们使用它的子类,如FileOutputStream等.

?

2、InputStreamReader? OutputStreamWriter

处理字符流的抽象类

InputStreamReader 是字节流通向字符流的桥梁,它将字节流转换为字符流.

OutputStreamWriter是字符流通向字节流的桥梁,它将字符流转换为字节流.

?

3、BufferedReader BufferedWriter

BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,readLine读取一个文本行,

从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。

BufferedWriter??由Writer?类扩展而来,提供通用的缓冲方式文本写入, newLine使用平台自己的行分隔符,

将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

==============================================================

E:/baoyue13.txt 文件内容:

123456789abcdefg
235xyz

附代码:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;

public class FileInputStreamDemo {
    public static void main(String[] args) throws Exception {

        /**
         * InputStream能从來源处读取一個一個byte,所以它是最低级的,
         */

        // read()方法返回的int类型,是表示数据下一个字节的字节码,如果已经到达流的最后面了,那就返回-1
        // 通过char 强转,输出字节码的内容
        FileInputStream fileIn2 = new FileInputStream(new File("E:/baoyue13.txt"));
        int read = fileIn2.read();
        System.out.println( read);
        System.out.println((char) read);

        byte[] bb = new byte[4];
        int read2 = fileIn2.read(bb);
        System.out.println( "长度 read2: " + read2);
        for(byte b:bb) {
            System.out.println(b);
            System.out.println((char)b);
        }

        int aa;
        while ((aa = fileIn2.read()) != -1) {
            System.out.print((char) aa);
        }

        System.out.println();
        System.out.println("--------------------------------");

        /**
         * InputStreamReader封裝了InputStream在里头,它以较高级的方式,一次读取一个一个字符,
         * 
         */

        FileInputStream fileIn3 = new FileInputStream(new File("E:/baoyue13.txt"));

        InputStreamReader sr = new InputStreamReader(fileIn3);
        System.out.println((char)sr.read());

        int a2;
        while ((a2 = sr.read()) != -1) {
            System.out.print((char) a2);
        }

        System.out.println();
        System.out.println("--------------------------------");

        /**
         * BufferedReader则是比InputStreamReader更高级,
         * 它封裝了StreamReader类,一次读取取一行的字符
         * 
         */

        FileInputStream fileIn4 = new FileInputStream(new File("E:/baoyue13.txt"));
        InputStreamReader sr2 = new InputStreamReader(fileIn4);
        BufferedReader br=new BufferedReader(sr2); 

        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }

    }

}

执行结果:

49
1
长度 read2: 4
50
2
51
3
52
4
53
5
6789abcdefg
235xyz
--------------------------------
1
23456789abcdefg
235xyz
--------------------------------
123456789abcdefg
235xyz

InputStream 、 InputStreamReader 、 BufferedReader区别

标签:def   返回   fileinput   方式   txt   字符   stat   输出流   stream   

原文地址:http://blog.51cto.com/devops2016/2287694

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!