美文网首页
37. Java IO: InputStreamReader

37. Java IO: InputStreamReader

作者: kopshome | 来源:发表于2017-12-13 15:39 被阅读0次

    想要查看此教程的目录请点击:Java IO教程目录贴地址


    Java InputStreamReader类(java.io.InputStreamReader)意图是包装了InputStream,因此将字节输入流变成基于字符的Reader。
    InputStreamReader经常被用来从文件或网络连接读取字符。例如,一个文本文件字符用的UTF-8编码,你可以使用InputStreamReader去包装FileInputStream以便去读取这样的文件。

    InputStreamReader例子

    下面是一个Java InputStreamReader的例子:

    InputStream inputStream       = new FileInputStream("c:\\data\\input.txt");
    Reader      inputStreamReader = new InputStreamReader(inputStream);
    
    int data = inputStreamReader.read();
    while(data != -1){
        char theChar = (char) data;
        data = inputStreamReader.read();
    }
    
    inputStreamReader.close()
    

    例子首先创建了一个FileInputStream,然后用InputStreamReader来包装它。然后,例子通过InputStreamReader速去了文件中的所有内容。
    注意:为了清晰起见这里忽略了一些适当的异常处理。相关的异常处理可以参考“Java IO Exception Handling”

    read()

    InputStreamReader的read()方法返回一个int值,表示读取的字符值,下面是相关代码:

    int data = inputStreamReader.read();
    

    你可以像下面这样把返回的int值强转成字符:

    char aChar = (char) data;
    

    流的结束

    如果read()方法返回 -1,意味着流已经全部读取完毕。-1 是int值,不是byte或short类型。当流读取完毕时,就可以关闭流了

    字符编码构造方法

    Java InputStreamReader有许多可供选择的构造方法,允许你去指定字符集设置(ISO-Latin1, UTF-8, UTF-16 等等)。
    下面是一个给构造方法传入编码格式的例子:

    InputStream inputStream       = new FileInputStream("c:\\data\\input.txt");
    Reader      inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
    

    注意InputStreamReader构造方法的第二个参数。
    InputStreamReader会把来自底层的InputStream字节用UTF-8编码来读取。

    关闭InputStreamReader

    此处的内容和其他流完全一致

    相关文章

      网友评论

          本文标题:37. Java IO: InputStreamReader

          本文链接:https://www.haomeiwen.com/subject/jztzixtx.html