2

我已经阅读了这个oracle java 教程,它基本上表明您可以使用 aFileInputStream或 a复制一个 txt 文件FileReader。尽管他们建议使用后一种方法,但我有一个问题。我想知道使用 FileInputStream 的第一种方法会发生什么,该方法基本上读取纯原始字节。

从这个链接

public class FileInputStream extends InputStream

FileInputStream 从文件系统中的文件获取输入字节。可用的文件取决于主机环境。FileInputStream 用于读取原始字节流,例如图像数据。要读取字符流,请考虑使用 FileReader。

如果它意味着只读取原始字节并且没有InputFileReader将字节桥接到字符。为什么只使用FileInputStream,它仍然有效?

4

3 回答 3

3

正如您所指出的 a FileInputStream(或通常InputStream是用于将原始数据作为字节读取,而 a FileReader(或通常 a Reader)用于读取字符数据。

Reader它将为您将读取的字节转换为字符。AReader将使用默认平台编码或构造函数中给定的编码进行此转换。

使用 a 复制文本文件是FileInputStream因为在磁盘上,即使是文本文件也只包含字节。

于 2013-06-20T12:55:20.547 回答
1

我不太确定您在问什么,但我认为您正在寻找的是InputStreamReader( link ),它用于将字节流转换为字符。将字节流转换为字符流时需要小心,因为 unicode 可以(并且经常这样做)每个字符使用多个字节。

于 2013-06-20T12:55:31.143 回答
1

FileInputStream 可以是来自任何文件的字节流,例如 mp3 文件:它只是关于“如何将任何文件放入我的 java 运行时?”的答案。FileReader 适用于 .txt 格式等字符文件。当然,您也可以将它用于任何文件,但是当您使用 FileReader 读取字符时,您可能会遇到编码错误。记住字节是 utf8 编码的,默认字符是 ascii。

于 2013-06-20T12:55:46.847 回答