gpt4 book ai didi

Java - 字符和字节流

转载 作者:行者123 更新时间:2023-12-01 18:39:37 24 4
gpt4 key购买 nike

我正在尝试创建一个程序,允许我从本地文件获取名称并将它们添加到名称字符串数组中。我不完全理解字符流,二进制流和缓冲流之间的区别,并且在线查找并没有回答我的问题,即:我将使用哪种类型的流从文本文件中读取以创建字符串数组?

最佳答案

I don't completely understand the difference between character streams, binary streams, and buffer streams

缓冲区在这里是一个转移注意力的东西——这只是一个实现细节,通常是为了提高效率。了解您正在读取的是二进制数据还是文本数据非常重要。如果您正在阅读文本文件,您需要一个具有某种描述的Reader。您的文件包含二进制数据(所有文件基本上都是字节),您需要说明如何将其转换为文本。您可以使用FileReader,但我更喜欢使用包装在InputStreamReader中的FileInputStream,如下所示您可以指定要在二进制和文本之间转换的编码。您需要知道文件的编码,例如UTF-8。

任何InputStream仅返回二进制数据; Reader 返回文本数据。

无论哪种方式,如果您想逐行读取(不清楚您的数组将包含什么),您将需要一个 BufferedReader 来包装您的 InputStreamReaderFileReader,因为它提供了 readLine() 方法。

Hmmm then why would people ever use byte streams, if we all use characters.

我们没有。图像文件、音乐、视频、压缩数据、加密数据等本质上不是文本数据。如果您使用 Reader 读取图像文件,您几乎肯定会丢失一些数据。

将文本视为另一种文件格式 - 如果您尝试加载图像来显示它,您需要一些能够理解该图像文件格式的东西;如果您尝试加载音乐文件来播放它,则需要能够理解该音频文件格式的东西 - 对于文本,InputStreamReader 可以理解文本。

尽管在所有情况下我们都有文件级别的字节,但您使用的类决定了如何解释这些字节。

关于Java - 字符和字节流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20487968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com