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