37. Java IO: InputStreamReader
2017-12-13 本文已影响0人
kopshome
想要查看此教程的目录请点击: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
此处的内容和其他流完全一致