我前几天问过this人们告诉我使用TFileStream
的问题。我正在阅读Głowacki的Expert Delphi,他使用的是TStreamReader / TStreamWriter。在评论中我读过这个:
TStreamReader是一个用于读取文本数据的辅助类。你的档案是 不是文本,它是二进制的。直接使用TFileStream
我有点麻烦。我知道binary文件不包含文本,而TFileStream
我可以读取二进制文件(如文档所述)。假设我想使用TStreamWriter
在文件上输出一系列数字,然后读取该文件的内容。我允许用TFileStream做到吗?
我看到TStreamWriter在构造函数中有TEncoding
所以我需要指定utf-8或ansi。这会影响文件的结构吗?
我是新手,我不太了解我在网上找到的专家话题。据我所知,TFileStream用于二进制文件,而TStreamReader用于包含一些文本的文件
答案 0 :(得分:6)
不要试图混淆你,但实际上所有文件都是二进制文件。
它们包含许多字节,以及人类或软件如何解释这些字节使它们变得有用。
但是,如果反对术语文本和二进制,则文本表示(或多或少)人类可读的任何内容,例如回答,而二进制表示任何非文字。
一个例子:在当前的Delphi版本中,整数由四个字节组成。如果将这些字节直接存储到文件中,则表示您正在编写二进制文件。如果您将文本表单(例如-172423423
)写为字符,那么您正在编写文本。
TextWriter
将文本写入流。 TBinaryWriter
在存储在内存中时写入数据。两者都可以使用任何类型的流,无论是TFileStream
还是TMemoryStream
来写入(或读取)。流表示文件或其他可写介质。
现在,文字可以有很多编码,例如: UTF-8,几个Ansi代码页等。这意味着不在#0..#127
范围内的“字符”编码不同。当然,这可以改变文件的确切内容。