【发布时间】:2017-08-10 12:28:17
【问题描述】:
几天前我问过this 有人告诉我使用TFileStream 的问题。我正在阅读 Głowacki 的 Expert Delphi,他使用 TStreamReader/TStreamWriter。在评论中我读到了这个:
TStreamReader 是一个用于读取文本数据的辅助类。你的文件是 不是文本,它是二进制的。直接使用 TFileStream 代替
我对此有点麻烦。我知道binary 文件不包含文本,并且使用TFileStream 我可以读取二进制文件(如文档所述)。假设我想用TStreamWriter在一个文件上输出一系列数字,然后读取这个文件的内容。我可以用 TFileStream 来做吗?
我看到 TStreamWriter 在构造函数中有TEncoding,所以我需要指定 utf-8 或 ansi 例如。这会影响文件的结构吗?
我是新手,我不太了解我在网上找到的专家主题。据我了解,TFileStream 用于二进制文件,TStreamReader 用于内部包含一些文本的文件
【问题讨论】:
-
对于二进制文件,您可以使用 TBinaryReader 和 TBinaryWriter 辅助类。
-
@Victoria 谢谢 :) 事实是我看到很多可以用来读取文件的类,我不知道如何选择正确的
-
那些类只是帮手。它们可以帮助您存储和阅读您想要的内容。例如TStreamWriter 参考说明了它的用途“写入字符流。” 如果您不想只写入字符,请不要使用它。 TBinaryWriter “使用 TBinaryWriter 将原始数据类型作为特定编码中的二进制值写入流。” 所以如果你想写例如整数(甚至是字符串),它可以帮助你...
-
您可以使用TFileStream 写入和读取的任何数据。只是语法的可读性不如那些助手。但可能更有效,因为与那些帮助类不同,使用 TFileStream 您可以编写和阅读例如一个整数数组。
-
数字不一定是文本。你不清楚你的意图。如果用户在记事本等文本编辑器中打开文件,这些数字是否可以读取?如果是这样,您正在编写文本。如果没有,你写二进制。二进制文件包含的信息对看到它的人没有意义,但对软件有意义(如图像文件、可执行文件、设计用于应用程序的数据文件或 Word 文档) )。如果您要使用的类要求编码,它是文本。二进制文件没有该选项。这应该有助于使其更清晰。
标签: delphi