【Java菜鸟 03】InputStreamReader 和BufferedReader

来源:互联网 发布:建阿里云网站视频教程 编辑:程序博客网 时间:2024/04/28 03:45

1、BufferedReaderDemo.java

package org.algorithm;import java.io.*;/* * (为了读取) * public class BufferedReader extends Reader *  * 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高校读取; * 可以指定缓冲区的大小,或者可使用默认的大小。 *  * BufferedReader 流能够读取文本行 , 通过向 BufferedReader 传递一个 Reader 对象 ,  * 来创建一个 BufferedReader 对象 , 之所以这样做是因为 FileReader 没有提供读取文本行的功能 . * */public class BufferedReaderDemo {    /*     * InputStreamReader 和 BufferedReader 的区别     * */    public static void main(String[] args) throws IOException {//throws IOException抛出异常        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));        System.out.println("请输入一些列文字,可包括空格:");        String text = bufferedReader.readLine();        System.out.println("请输入文字:"+text);    }    /*     * throws IOException   抛出异常     *      * InputStreamReader 是字节流通向字符流的桥梁     * */}

2、InputStreamReaderDemo.java

package org.algorithm;import java.io.*;/*  * (为了输入) *  * InputStreamReader:将字节流转换成字符流,是字节流向字符流转换的桥梁。 * 由于文本文件中存放的都是字节流,而程序中需要的是字符流,所以使用InputStreamReader来 * 将文本文件转换成字符流,有利于进一步的操作。 *  *  //构造一个默认编码集的InputStreamReader类 *  InputStreamReader isr = new InputStreamReader(InputStream in); *    *  //构造一个指定编码集的InputStreamReader类 *  InputStreamReader isr = new InputStreamReader(InputStream in,String charsetName);  *   *  //读取键盘上的数据 *  参数 in对象通过 InputStream in = System.in; *   *  //读取文件中的数据 *  或者 InputStream in = new FileInputStream(String fileName); *  可以看出 FileInputStream 为InputStream的子类 *   *  //读取单个字符 *  int read(); *   *  ;//将读取到的字符存到数组中。返回读取的字符数 *  int read(char []cbuf); *   * */class InputStreamReaderDemo {  public static void transReadNoBuf() throws IOException {    /**     * 没有缓冲区,只能使用read()方法。     */    //读取字节流    //InputStream in = System.in;//读取键盘的输入。    InputStream in = new FileInputStream("D:\\demo.txt");//读取文件的数据。    //将字节流向字符流的转换。要启用从字节到字符的有效转换,    //可以提前从底层流读取更多的字节.    InputStreamReader isr = new InputStreamReader(in);//读取    //综合到一句。    //InputStreamReader isr = new InputStreamReader(    //new FileInputStream("D:\\demo.txt"));    char []cha = new char[1024];    int len = isr.read(cha);    System.out.println(new String(cha,0,len));    isr.close();  }  public static void transReadByBuf() throws IOException {    /**     * 使用缓冲区 可以使用缓冲区对象的 read() 和  readLine()方法。     */    //读取字节流    //InputStream in = System.in;//读取键盘上的数据    InputStream in = new FileInputStream("D:\\demo.txt");//读取文件上的数据。    //将字节流向字符流的转换。    InputStreamReader isr = new InputStreamReader(in);//读取    //创建字符流缓冲区    BufferedReader bufr = new BufferedReader(isr);//缓冲    //BufferedReader bufr = new BufferedReader(    //new InputStreamReader(new FileInputStream("D:\\demo.txt")));可以综合到一句。      /*int ch =0;    ch = bufr.read();    System.out.println((char)ch);    */    String line;    while((line = bufr.readLine())!=null){      System.out.println(line);    }    isr.close();  }}

3、Instance

package org.algorithm;import java.io.*;class UtilResource {    private static void initializeResource() {        try {          //读取文件,并且以utf-8的形式写出去          BufferedReader bufread;          String read;          bufread = new BufferedReader(new InputStreamReader(new FileInputStream("e:\\input.txt")));           /*           * FileInputStream("e:\\input.txt"): 用于输入文本文件           *            * InputStreamReader(new FileInputStream("e:\\input.txt")): 用于将文本文件的字节流转换为字符流           *            * BufferedReader(new InputStreamReader(new FileInputStream("e:\\input.txt"))):用于缓冲字符,便于高效读取           * */          while ((read = bufread.readLine()) != null) {            System.out.println(read);          }          bufread.close();        } catch (FileNotFoundException ex) {          ex.printStackTrace();        } catch (IOException ex) {          ex.printStackTrace();        }      }    public static void main(String args[]){        initializeResource();    }}
0 0
原创粉丝点击