c# - 将大字符串写入文件的最佳方法

标签 c# string file stream

在 C# 中,我正在读取中等大小的文件(100 KB ~ 1 MB),修改部分内容,最后写入不同的文件。所有内容均为文字。修改是作为字符串对象和字符串操作完成的。我目前的做法是:

  1. 使用 StreamReader 从原始文件中读取每一行。
  2. 为新文件的内容打开一个 StringBuilder
  3. 修改字符串对象,调用StringBuilderAppendLine(直到文件结束)
  4. 打开一个新的StreamWriter,并将StringBuilder写入写入流。

但是,我发现 StremWriter.Write 截断了 32768 字节 (2^16),但是 StringBuilder 的长度比那个大。我可以写一个简单的循环来保证整个字符串到一个文件。但是,我想知道在 C# 中执行此任务的最有效方法是什么?

总而言之,我只想修改文本文件的某些部分并写入不同的文件。但是,文本文件大小可能大于 32768 字节。

== 回答== 很抱歉让您感到困惑!只是我没有调用 flushStremWriter.Write 没有短(例如 2^16)限制。

最佳答案

StreamWriter.Write

没有

截断字符串,没有限制。

在内部它使用 String.CopyTo,另一方面使用 unsafe code(使用 fixed)来复制字符,所以它是 < strong>最有效。

关于c# - 将大字符串写入文件的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5027349/

相关文章:

c# - 我应该只将 ID 存储到 Redis 中,然后使用 ID 查询 SQL

c# - 具有意外行为的通用方法参数

c# - 通过 CSVHelper 使用属性使 header 更易于阅读

c - 将字符串插入双数组

C++ 程序不从文件中读取字符

c# - gzip HttpWebRequest

python - 从特定字符后的字符串中提取数字

java - StringBuilder.substring(..) 是否创建了一个新的 char[]?

java - struts2 i18n java属性,如何转义字符?

file - base64 解码器(io.Reader 实现)不当行为