InputStream 、 InputStreamReader 、 BufferedReader区别

区别介绍:
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

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

时间: 2024-07-30 09:12:48

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

JAVA IO InputStream InputStreamReader BufferedReader

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

Java 之 FileReader FileInputStream InputStreamReader BufferedReader 作用与区别

一直搞不清楚FileReader FileInputStream InputStreamReader BufferedReader 之间的区别联系,每次写读取文档的java程序都是网上百度.今天专门就这个问题进行了深入探讨. 一.来源 java.io下有两个抽象类InputStream和Reader,上述类都是继承了这两个超类.它们之间区别是:InputStream是字节流的输入,Reader是字符流输入. 二.具体每类 InputStream    | __FileInputStream Fi

Android笔记:利用InputStream和BufferedReader 进行字节流 字符流处理

通过socket获取字节流处理时最初使用的是BufferedReader和PrintWriter  这种方式在解析字符串时是比较方便的 但是在处理字节时不够方便最终还是回归到InputStream和OutputStream方式 不使用缓存直接使用字节流操作,一次传输的字节数据在300字节以内,目前没有测试差距会有多大. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException;

Java笔记--File,FileInputStream,FileReader,InputStreamReader,BufferedReader 的使用和区别

转自:http://hi.baidu.com/danghj/item/0ef2e2c4ab95af7489ad9e39 参考资料: l < core java > 12 章 l 使用 Java 操作文本文件的方法详解  http://java.ccidnet.com/art/3737/20041108/523627_1.html l FileReader 是什么类?和 FileInputStream 有什么不同?   http://book.hackbase.com/ask2/ask10757

InputStream与InputStreamReader的区别

InputStream是字节流,多用于读取二进制数据 InputStreamReader是字符流,多用于读取文本文件.有不同的编码方式,如utf8等.可以在构造的时候指定编码方式. 例如,两者都有一个无参read函数,前者读取一个字节并转换为int(0-255),后者读取一个字符并转换为int(最高两位为0) 参考:http://stackoverflow.com/questions/3194918/inputstream-vs-inputstreamreader

Java 之 FileReader FileInputStream InputStreamReader BufferedReader 作用与区

ava.io下面有两个抽象类:InputStream和Reader InputStream是表示字节输入流的所有类的超类Reader是用于读取字符流的抽象类InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别.即用Reader读取出来的是char数组或者String ,使用InputStream读取出来的是byte数组.弄清了两个超类的根本区别,再来看他们底下子类的使用,这里只对最常用的几个说明 InputStream    | __FileInputStre

InputStream,InputStreamReader和Reader的关系

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

JAVASE笔记回顾

第一部分,JAVA基础和面向对象 part01 入门与开发环境搭建 1: 计算机基础知识(了解)(1)计算机(2)计算机硬件(3)计算机软件系统软件:windows,linux,mac应用软件:QQ,YY,扫雷,CS/F(4)软件开发就是用开发工具和计算机语言做出软件(5)计算机语言人与计算机的交流方式(6)人机交互A:图像界面方便,简单,直观.B:DOS 窗口方式要有控制台, 要记住很多的命令, 麻烦.(7)键盘功能键和快捷键的介绍(掌握)A:键盘功能键tabshiftctrlalt空格ent

java--IO流(2)--黑马程序员

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- IO流(2) 主要内容:<FileInputStream类.带缓冲的字节流.String类中的编码和解码.转换流.字符流类.带缓冲的字符流.数据输入输出流.byte数组缓冲流.打印流.随机访问流.序列化流和反序列化流.Properties  > 1.FileInputStream类 字节流:  输出流:OutputStream  |--FileOutputStream:  输入流:Input