InputStream 与 Reader
InputStream vs Reader
我正在查看输入输出部分,类 和接口太多,让我有点困惑。
正如文档所说 InputStream
是基于字节的流,而 Reader
是基于字符的流。但正如我正确理解的那样,它们之间的唯一区别是 Reader
每次读取两个字节,而不是像 InputStream
那样一次读取一个字节。
所以我不明白有什么区别:
使用 InputStream
byte[] bytes = new byte[2];
InputStream in = new FileInputStream("input.txt");
int bytesRead = in.read(bytes);
while(bytesRead != -1) {
doSomethingWithData(data);
bytesRead = inputstream.read(data);
}
使用 Reader
Reader reader = new InputStreamReader(new FileInputStream("input.txt"));
int data = reader.read();
while (data != -1) {
doSomethingWithData(data);
data = reader.read();
}
我对这些方面真的很困惑。请详细说明。谢谢。
您可以使用 Reader
来读取文本数据。它支持一些字符编码,如 ISO、UTF-8。如果您想读取带有某种编码的文本文件,那么您可以使用 Reader
s,例如 - BufferedReader
、StringReader
等。
并且您可以使用 Stream (InputStream, OutputStream)
来操作二进制数据。例如,你想读取一个图像文件,那么你可以使用 FileInputStream
,当你想将它保存到磁盘时,你可以使用 FileOutputStream
.
我正在查看输入输出部分,类 和接口太多,让我有点困惑。
正如文档所说 InputStream
是基于字节的流,而 Reader
是基于字符的流。但正如我正确理解的那样,它们之间的唯一区别是 Reader
每次读取两个字节,而不是像 InputStream
那样一次读取一个字节。
所以我不明白有什么区别:
使用 InputStream
byte[] bytes = new byte[2];
InputStream in = new FileInputStream("input.txt");
int bytesRead = in.read(bytes);
while(bytesRead != -1) {
doSomethingWithData(data);
bytesRead = inputstream.read(data);
}
使用 Reader
Reader reader = new InputStreamReader(new FileInputStream("input.txt"));
int data = reader.read();
while (data != -1) {
doSomethingWithData(data);
data = reader.read();
}
我对这些方面真的很困惑。请详细说明。谢谢。
您可以使用 Reader
来读取文本数据。它支持一些字符编码,如 ISO、UTF-8。如果您想读取带有某种编码的文本文件,那么您可以使用 Reader
s,例如 - BufferedReader
、StringReader
等。
并且您可以使用 Stream (InputStream, OutputStream)
来操作二进制数据。例如,你想读取一个图像文件,那么你可以使用 FileInputStream
,当你想将它保存到磁盘时,你可以使用 FileOutputStream
.