对字符串数据使用 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 有啥好处?的主要内容,如果未能解决你的问题,请参考以下文章

使用分类字符串对 pandas 数据框进行分组

对字符串数据使用 TextReader/Writer 而不是 Binary Reader/Writer 有啥好处?

Thinkphp 模板中直接对数据处理 模板中使用函数 中文字符串截取

为了在 PL/SQL 中对这些数据进行排序,使用啥数据结构?

使用 sklearn 通过类对字符串进行分类

使用 pandas str.find 方法对数据框列中的字符串进行切片