【问题标题】:Is there a maximum line-length in a textfile without a linebreak?没有换行符的文本文件中是否有最大行长?
【发布时间】:2011-12-04 02:31:15
【问题描述】:

尝试使用 C# 中的 StreamReader 或类似工具来读取和写入非常长的行而不使用换行符。

据我了解,换行符仍然只是一个称为文件的长字节数组中的 2 个字节(CR+LF)。至少这就是我在 C/C++ 中习惯的方式......

这对于 C# 和 .net 是否相同,或者对于没有换行符的行是否有一些最大长度?

【问题讨论】:

  • 如果你希望它是跨平台的,你应该使用Environment.NewLine,因为Unix只使用LF。
  • @jb。 :C# 不打算跨平台......仅仅因为存在单声道并不意味着每个人都使用,应该编写跨平台代码,甚至意识到这一点。如果他在他的问题中提到跨平台,那么这将是一个很好的评论。
  • C# 和 .NET / 绝对 / 设计为跨平台的。是否应该编写跨平台代码取决于他们。
  • @Dani 我提到它是因为他说linebreak is still just 2 bytes (CR+LF)。如果您使用的是 unix,那就不是这样了。我只是不想让他写一个大程序然后让它以奇怪的方式失败,因为他没有预料到只有 LF 的结局。
  • @MikeChristensen:你为什么这么认为?微软为什么要设计一种跨平台语言?

标签: c# streamreader line-breaks textreader


【解决方案1】:

.NET 没有具体限制,但查看长行的不同方式可能会给您带来问题,主要与性能有关。尝试在记事本中打开你的长行文件,并打开自动换行,它会让你窒息。 .NET 中的多行文本框也是如此。

但是对于纯程序化阅读很长的行是没有问题的。

【讨论】:

  • 太棒了!我只想将它用作在大量纯数据转换为 SQL 格式之前存储它的一种快速方法。对于惰性/延迟解析来说。这是个好消息!感谢您的快速响应!
  • 好吧,字符串(和缓冲区)被限制为 2GB,但这通常不是一个实际问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-12
  • 1970-01-01
  • 2010-11-29
相关资源
最近更新 更多