InputStream、InputStreamReader和BufferedReader的区别

转自:https://www.cnblogs.com/redick/p/6644594.html

1.InputStream、OutputStream

处理字节流的抽象类

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

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

2.InputStreamReader  OutputStreamWriter

处理字符流的抽象类

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

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

3.BufferedReader BufferedWriter

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

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

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

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

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

import <a href="http://lib.csdn.net/base/javase" class=‘replace_word‘ title="Java SE知识库" target=‘_blank‘ style=‘color:#df3434; font-weight:bold;‘>Java</a>.io.*;
public class Main {
    public static void main(String[] args) {     

        try {
            FileInputStream fis=new FileInputStream("d://desktop//test.txt");
            int i;     

            try {
                while((i=fis.read()) != -1){
                    System.out.println(i);
                }
                /*假設test.txt檔裡頭只有一個文字 "陳" ,且其編碼為 utf8
                 * 輸出
                 *  233
                    153
                    179
                 */
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }     

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }     

    }
}   

InputStreamReader
 InputStreamReader封裝了InputStream在里头,
 它以较高级的方式,一次读取一个一个字符,
 下例是假设有一个编码为utf8的文档,
 其內容只有一个中文字 "陳"

import java.io.*;
public class Main {
    public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {     

            FileInputStream fis=new FileInputStream("d://desktop//test.txt");
            try {
                InputStreamReader isr=new InputStreamReader(fis,"utf8");
                int i;
                while((i=isr.read()) != -1){
                    System.out.println((char)i);  //輸出  陳
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }                                            

    }
}    

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

import java.io.*;
public class Main {
    public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {     

            FileInputStream fis=new FileInputStream("d://desktop//test.txt");     

            try {
                InputStreamReader isr=new InputStreamReader(fis,"utf8");
                BufferedReader br=new BufferedReader(isr);     

                String line;
                while((line=br.readLine()) != null){
                    System.out.println(line);
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }                                            

    }
}    

原文地址:https://www.cnblogs.com/liulin1187740947/p/9175520.html

时间: 2024-10-07 03:17:34

InputStream、InputStreamReader和BufferedReader的区别的相关文章

InputStream 、 InputStreamReader 、 BufferedReader区别

区别介绍:1.InputStream.OutputStream 处理字节流的抽象类 InputStream 是字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream等. OutputStream是字节输出流的所有类的超类,一般我们使用它的子类,如FileOutputStream等. ? 2.InputStreamReader? OutputStreamWriter 处理字符流的抽象类 InputStreamReader 是字节流通向字符流的桥梁,它将字节流转换为字符流.

InputStreamReader和FileReader的区别

/* BufferedReader InputStreamReader 转换流 */ import java.io.*; public class BufferedReaderTest02 { public static void main(String[] args) throws Exception{ /* //创建带有缓冲区的字符输入流 FileInputStream fis = new FileInputStream("BufferedReaderTest02.java");

InputStreamReader 和FileReader的区别

InputStreamReader 和 BufferedReader .其中最重要的类是 InputStreamReader ,它是字节转换为字符的桥梁. 你可以在构造器重指定编码的方式,如果不指定的话将采用底层操作系统的默认编码方式,例如 GBK 等. FileReader 与 InputStreamReader 涉及编码转换 ( 指定编码方式或者采用 os 默认编码 ) ,可 能在不同的平台上出现乱码现象!而 FileInputStream 以二进制方式处理,不会出现乱码现象 . FileI

InputStream 、 InputStreamReader 、 BufferedReader三者的区别

InputStream.OutputStream 处理字节流的抽象类 InputStream 是字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream等. OutputStream是字节输出流的所有类的超类,一般我们使用它的子类,如FileOutputStream等. 2.InputStreamReader  OutputStreamWriter 处理字符流的抽象类 InputStreamReader 是字节流通向字符流的桥梁,它将字节流转换为字符流. OutputSt

InputStream 、 InputStreamReader 、 BufferedReader

1.InputStream.OutputStream 处理字节流的抽象类 InputStream 是字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream等. OutputStream是字节输出流的所有类的超类,一般我们使用它的子类,如FileOutputStream等. 2.InputStreamReader  OutputStreamWriter 处理字符流的抽象类 InputStreamReader 是字节流通向字符流的桥梁,它将字节流转换为字符流. Output

【Java基础】InputStream 、 InputStreamReader和BufferedReader

在Java中.上述三个类经经常使用于处理数据流,以下介绍一下三个类的不同之处以及各自的使用方法. InputStream : 是全部字节输入流的超类,一般使用它的子类:FileInputStream等.它能输出字节流: InputStreamReader : 是字节流与字符流之间的桥梁,能将字节流输出为字符流.而且能为字节流指定字符集,可输出一个个的字符. BufferedReader : 提供通用的缓冲方式文本读取,readLine读取一个文本行, 从字符输入流中读取文本,缓冲各个字符,从而提

JAVA IO InputStream InputStreamReader BufferedReader

InputStream.OutputStream 处理字节流的抽象类,InputStream能从來源处读取一個一個byte,所以是最低级的.InputStream 是字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream等 InputStreamReader  OutputStreamWriter 处理字符流的抽象类,是字节流通向字符流的桥梁,它将字节流转换为字符流.它以较高级的方式,一次读取一个一个字符. BufferedReader BufferedWriter B

转载:【Java基础】InputStream 、 InputStreamReader和BufferedReader

来源:http://blog.csdn.net/zgljl2012/article/details/47267609 在Java中,上述三个类经常用于处理数据流,下面介绍一下三个类的不同之处以及各自的用法. InputStream : 是所有字节输入流的超类,一般使用它的子类:FileInputStream等,它能输出字节流: InputStreamReader : 是字节流与字符流之间的桥梁,能将字节流输出为字符流,并且能为字节流指定字符集,可输出一个个的字符: BufferedReader

InputStream,InputStreamReader和Reader的关系

InputStream:得到的是字节输入流,InputStream.read("filename")之后,得到字节流 Reader:读取的是字符流 InputStreamReader:从字节到字符的桥梁.InputStreamReader(InputStream.read("filename")); reader.read(InputStreamReader(InputStream in));便可从字节变为字符,打印显示了. java.io.Reader 和 jav