今天我得到了这个问题,我认为我的回答非常糟糕。我说流是一种流动的数据,而读者是一种从中读取的技术,即静态数据。我知道这是一个糟糕的答案,所以请用Java中的例子向我提供这两者之间的明显区别和定义。
感谢。
答案 0 :(得分:17)
InputStream是面向字节的。读者是以人为本的。
javadocs是你的朋友,解释了它的不同之处。 Reader,InputStream
答案 1 :(得分:11)
正如其他人所说,每个用例略有不同(即使它们通常可以互换使用)
由于读者是用于阅读字符,因此当您处理具有文本性质的输入(或表示为字符的数据)时,它们会更好。我说的更好,因为读者(在典型用法的上下文中)本质上是一些方法,可以方便地阅读字符输入。
答案 2 :(得分:9)
Stream用于读取字节,Reader用于读取字符。一个字符可能需要一个字节或更多,具体取决于字符集。
答案 3 :(得分:6)
流类是面向字节的类,这意味着所有InputStream
类(缓冲和非缓冲)从流中逐字节读取数据,并且所有OutputStream
(缓冲和非缓冲)类写入数据逐字节到流。当您拥有较小的数据或处理二进制文件(如图像)时,流类很有用。
另一方面,Reader/Writer
是基于字符的类。这些类在流或流中读取或写入一个字符。这些类扩展java.io.Reader
(所有字符输入类)或java.io.Writer
(所有字符输出类)。如果您正在处理文本文件或其他文本流,这些类很有用。这些类也是Buffered
和Non-Buffered
。