• 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();     
                }                                            
                         
        }     
    }    
  • 相关阅读:
    通过身份证号获取性别
    网线的制作方法
    duilib中的V和H布局中滚动条问题
    duilib中控件拖拽功能的实现方法(附源码)
    仿酷狗音乐播放器已开源!
    关于仿酷狗音乐播放器开源:寻求一套音乐播放器素材,让仿酷狗开源
    Richedit使用大全
    Redrain个人维护并使用的DuiLib和UiLib库源码下载地址
    vc编译器 msvcr.dll、msvcp.dll的含义和相关错误的处理
    duilib List控件,横向滚动时列表项不移动或者移动错位的bug的修复
  • 原文地址:https://www.cnblogs.com/liulin1187740947/p/9175520.html
Copyright © 2020-2023  润新知