Java InputStreamReader类

InputStreamReader 将字节流转换为字符流。是字节流通向字符流的桥梁,能将字节流输出为字符流,并且能为字节流指定字符集,可输出一个个的字符。如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK。

定义

public class InputStreamReader extends Reader

InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如:BufferedReader in = newBufferedReader(new InputStreamReader(System.in));

构造函数

InputStreamReader(InputStream in)   //创建一个使用默认字符集的 InputStreamReader。
InputStreamReader(InputStream in, Charset cs)   //创建使用给定字符集的 InputStreamReader。
InputStreamReader(InputStream in, CharsetDecoder dec)   //创建使用给定字符集解码器的 InputStreamReader。
InputStreamReader(InputStream in, String charsetName)   //创建使用指定字符集的 InputStreamReader。

方法

void close()   //关闭该流并释放与之关联的所有资源。
String getEncoding()   //返回此流使用的字符编码的名称。
int read()   //读取单个字符。
int read(char[] cbuf, int offset, int length)   //将字符读入数组中的某一部分。
boolean ready()   //判断此流是否已经准备好用于读取。

例子

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();  
    }  
}




版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。