0

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

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

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

4

1 回答 1

1

检测文件是文本还是二进制文件很难。绝大多数文本文件也不是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!
    }
}
于 2012-12-03T15:00:37.920 回答