c# - 更改 FileHelpers EOL 字符

标签 c# .net filehelpers

我正在尝试将 10GB 的 .dat 文件解析为 .NET 中可识别的内容。列分隔符是“~”,EOL 是“++EOL++”。我知道如何处理定界符,但是当文件中没有实际的换行符时,我找不到一种简单的方法来处理“++EOL++”。这可以通过 FileHelpers 中的选项来处理,还是我必须编写一些自定义的东西?

最佳答案

默认情况下,No FileHelpers 不支持具有异常行尾字符序列的文件。

预解析文件并替换 EOL 序列可能是最简单的方法。但是,它是一个可扩展的库,因此您可以创建自己的 DataStorage subclass .你基本上必须重写

public override object[] ExtractRecords()
{
    using (MyStreamReader reader = new MyStreamReader(fileName, base.mEncoding, true, 102400))
    {
        T[] localArray = this.ReadStream(reader, maxRecords);
        reader.Close();
        return localArray;
    }
}

然后创建一个新类 MyStreamReader,它与(不幸的是密封)InternalStreamReader 除了包含 EOL 的 ReadLine 相同代码

switch (ch)
{
    case '\n':
    case '\r':

    etc...
}

(顺便说一句,我指的是 FileHelpers 2.9.9 的源代码。版本 2.0.0 似乎使用了 System.IO.StreamReader,因此您可以直接继承它而不是复制它InternalStreamReader.

关于c# - 更改 FileHelpers EOL 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8839724/

相关文章:

c# - 删除.net mvc中的路由元素

c# - 从 XmlNode 中提取 'text' 值的最佳方法?

.net - 对于 .NET ToolStripButton,我可以有多行 "Text"属性吗?

.NET ORM 适配器 : LLBLGEN vs nHydrate

c# - 从数字 XDocument 中选择一个元素

c# - ASP.NET MVC 帮助程序扩展和关注点分离

java - IKVM 复杂自定义类型在重新映射到属性时出错!

c# - 写入 CSV 文件

c# - 带 FileHelpers 的条件记录类型

c# - 如何跳过不良记录