【发布时间】:2018-02-25 19:48:12
【问题描述】:
我在this 教程中看到了以下语句。
而 InputStream 一次返回一个字节,表示一个值 介于 0 和 255 之间(如果流没有更多数据,则为 -1),Reader 一次返回一个字符,表示 0 到 65535 之间的值(或 -1 如果流中没有更多数据)。
下面是示例代码-
Reader reader = new FileReader("c:\\data\\myfile.txt");
int data = reader.read();
while(data != -1){
char dataChar = (char) data;
data = reader.read();
}
InputStream 的代码也类似。代替 FileReader & Reader ;使用 FileInputStream 和 InputStream。 Reader 返回 char 而 InputStream 流返回一个字节。在这两种情况下,当我使用诸如 "Hello World" 之类的字符串进行测试时,它一次读取一个字符。超过 255 的值是什么,我可以使用这些值来查看这些基于字节的输入和基于字符的输入之间的区别。
工作计划
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
public class ReaderStream {
public static void main(String[] args) {
String data = "படிகஅமைப்பு";
InputStream input = new ByteArrayInputStream(data.getBytes());
Reader inputStream = new InputStreamReader(input);
try {
int readData = inputStream.read();
while(readData != -1) {
System.out.print((char)readData);
readData = inputStream.read();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("");
input = new ByteArrayInputStream(data.getBytes());
try {
int readData = input.read();
while(readData != -1) {
System.out.print((char)readData);
readData = input.read();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
输出
படிகஅமைப்பு
பà®à®¿à®à®à®®à¯à®ªà¯à®ªà¯
【问题讨论】:
-
Reader和InputStream有不同的用途。请使用它们的用途的方法/类!Reader字符数据,InputStream原始/二进制数据。随意在螺丝上使用锤子,但不要抱怨(或问为什么它不工作)。请参阅文章@nullpointer ... 指向。 -
@sruetti 我理解其中的区别。我刚刚编写了这个程序来查看 inputstream 是否返回值 0 到 255 与 Reader 返回值 0 到 65535。感谢您的输入。
标签: java