博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
InputStream、InputStreamReader和BufferedReader的区别
阅读量:5031 次
发布时间:2019-06-12

本文共 3362 字,大约阅读时间需要 11 分钟。

转自:

 

1.InputStream、OutputStream

处理字节流的抽象类

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

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

 

2.InputStreamReader  OutputStreamWriter

处理字符流的抽象类

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

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

 

3.BufferedReader BufferedWriter

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

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

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

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

 

InputStream能从來源处读取一個一個byte,

所以它是最低级的,
例:

 

import Java.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

你可能感兴趣的文章
SAS学习经验总结分享:篇二—input语句
查看>>
UIImage与UIColor互转
查看>>
RotateAnimation详解
查看>>
系统管理玩玩Windows Azure
查看>>
c#匿名方法
查看>>
如何判断链表是否有环
查看>>
【小程序】缓存
查看>>
ssh无密码登陆屌丝指南
查看>>
MySQL锁之三:MySQL的共享锁与排它锁编码演示
查看>>
docker常用命令详解
查看>>
jQuery技巧大放送
查看>>
字符串转换成JSON的三种方式
查看>>
Hive时间函数笔记
查看>>
clojure-emacs-autocomplete
查看>>
一个自己写的判断2个相同对象的属性值差异的工具类
查看>>
10 华电内部文档搜索系统 search03
查看>>
[HIHO1149]回文字符序列(dp)
查看>>
[HDU1402]A * B Problem Plus(FFT)
查看>>
[CF803C] Maximal GCD(gcd,贪心,构造)
查看>>
逆时针旋转的矩阵变换
查看>>