• InputStreamReader和BufferedReader的区别


    .InputStream、OutputStream

    处理字节流的抽象类

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

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

    2.InputStreamReader  OutputStreamWriter

    处理字符流的抽象类

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

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

    3.BufferedReader BufferedWriter

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

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

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

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

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

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

    BufferedReader

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

     1 import java.io.*;     
     2 public class Main {     
     3     public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {     
     4                      
     5             FileInputStream fis=new FileInputStream("d://desktop//test.txt");     
     6                  
     7             try {     
     8                 InputStreamReader isr=new InputStreamReader(fis,"utf8");                     
     9                 BufferedReader br=new BufferedReader(isr);     
    10                      
    11                 String line;     
    12                 while((line=br.readLine()) != null){     
    13                     System.out.println(line);     
    14                 }     
    15             } catch (Exception e) {     
    16                 // TODO Auto-generated catch block     
    17                 e.printStackTrace();     
    18             }                                            
    19                      
    20     }     
    21 }
     1 public String getRequestStr(HttpServletRequest request) {
     2         StringBuilder str = new StringBuilder();
     3         BufferedReader bufferedReader = null;
     4         InputStreamReader inputStreamReader = null;
     5         try {
     6             inputStreamReader = new InputStreamReader(request.getInputStream(), "UTF-8");
     7             bufferedReader = new BufferedReader(inputStreamReader);
     8             String line = null;
     9             while ((line = bufferedReader.readLine()) != null) {
    10                 str.append(line);
    11             }
    12             logger.info("读取request文件流信息:" + str);
    13         } catch (Exception e) {
    14             logger.error("读取request文件流信息异常:" + e.getMessage());
    15         } finally {
    16             if (null != bufferedReader) {
    17                 try {
    18                     bufferedReader.close();
    19                 } catch (IOException e) {
    20                     logger.error(e.getMessage());
    21                 }
    22             }
    23             if (null != inputStreamReader) {
    24                 try {
    25                     inputStreamReader.close();
    26                 } catch (IOException e) {
    27                     logger.error(e.getMessage());
    28                 }
    29             }
    30         }
    31         return str.toString();
    32     }
    • 总结

    在读取网络数据流的时候,可以通过先用InputStream获取字节流、InputStreamReader将字节流转化成字符流、BufferedReader将字符流以缓存形式输出的方式来快速获取网络数据流。

    获取字符流后,可直接缓存,然后从缓存区取出,这时的速度比InputStreamReader又将快上很多。

  • 相关阅读:
    easyui属性表格的一点小总结
    我是程序员:国庆带女朋友回家见父母
    我睁着朦胧呆滞的双眼立在初秋的夜里
    iframe父子兄弟之间调用传值(contentWindow && parent)
    向前兼容和向后兼容的含义
    char 与 String 相等比较
    2012国庆12天的长假
    JavaScript遍历XML总结
    Spring3.x企业应用开发实战Spring+Hibernat架构分析
    w3school上系统过了一遍Jquery的总结
  • 原文地址:https://www.cnblogs.com/shenjiangwei/p/8930585.html
Copyright © 2020-2023  润新知