对字符串数据使用 TextReader/Writer 而不是 Binary Reader/Writer 有啥好处?
Posted
技术标签:
【中文标题】对字符串数据使用 TextReader/Writer 而不是 Binary Reader/Writer 有啥好处?【英文标题】:What is the benefit of using a TextReader/Writer instead of a Binary Reader/Writer for string data?对字符串数据使用 TextReader/Writer 而不是 Binary Reader/Writer 有什么好处? 【发布时间】:2014-04-03 13:13:40 【问题描述】:假设这里唯一的区别是二进制读取器/写入器对字符串使用固定长度编码,因此效率可能较低,这是否正确?
【问题讨论】:
它们是用于不同目的的不同类型。你想做什么? 据我了解,我可以使用二进制读取器/写入器来处理文本文件(我目前正在使用其中的一堆)。只是想知道为什么我需要一个 TextReader/Writer。无论哪种情况,我都想将数据加载到字符串中,对其进行修改,然后将其写回。 您通常会为 binary 文件(因此得名)使用BinaryReader/BinaryWriter
,即使它们也可能包含文本。如果您只是处理文本,则应使用TextReader
/TextWriter
,例如StreamReader
/StreamWriter
。请注意,当您调用 BinaryWriter.WriteString
时,它会添加一个长度前缀 - 结果不会是纯文本文件。您可以重复使用WriteChars
,但这会更尴尬。
【参考方案1】:
没有其他差异,例如读和写行,编码......基本上是与文本有关的“帮助”功能的负载。
【讨论】:
【参考方案2】:不同之处在于常规文本文件没有充满长度前缀。如果您正在编写一个旨在作为文本读取的文件:使用 TextWriter。
您可能会认为“啊,BinaryWriter 是用于二进制”,但事实并非如此:BinaryWriter 和 BinaryReader 是相互配对的,但在二进制文件中写入文本数据并没有“通用”规范。它完全取决于文件格式/协议,并且在大多数二进制情况下 BinaryWriter 没有任何用处。更常见的是,在处理二进制数据时只使用 Stream。
【讨论】:
以上是关于对字符串数据使用 TextReader/Writer 而不是 Binary Reader/Writer 有啥好处?的主要内容,如果未能解决你的问题,请参考以下文章
对字符串数据使用 TextReader/Writer 而不是 Binary Reader/Writer 有啥好处?
Thinkphp 模板中直接对数据处理 模板中使用函数 中文字符串截取