CsvReader不检测二进制输入文件

时间:2012-12-03 14:46:50

标签: c# parsing csv

我正在使用A Fast CSV Reader库来读取C#应用程序中的CSV文件。但是我在创建CsvReader对象时遇到了一些麻烦。

CsvReader csv = new CsvReader(new StreamReader("data.csv"), true));

将二进制文件传递给此代码时,不会抛出异常,输入文件将被视为普通CSV文件。如何检测给定文件是否为CSV文件?或者至少我如何确保它不是二进制文件?

1 个答案:

答案 0 :(得分:1)

检测文件是文本还是二进制文件is hard。理所当然,绝大多数文本文件也不是 CSV。因此,我怀疑这种验证是否值得。

如果CSV阅读器无法检测到垃圾输入(可能是在您开始解析时而不是在构建时),那么我会考虑不同的实现。有很多可供选择。

这是.net中的一个:

参考Microsoft.VisualBasic,您可以使用TextFieldParser

using (var parser =
    new TextFieldParser(@"c:\data.csv")
        {
            TextFieldType = FieldType.Delimited,
            Delimiters = new[] { "," }
        })
{
    while (!parser.EndOfData)
    {
        string[] fields;
        fields = parser.ReadFields();
        //go go go!
    }
}