我正在使用A Fast CSV Reader库来读取我的 C# 应用程序中的 CSV 文件。但是我在创建CsvReader
对象时遇到了一些麻烦。
CsvReader csv = new CsvReader(new StreamReader("data.csv"), true));
将二进制文件传递给此代码时,不会引发异常,并且输入文件被视为普通 CSV 文件。如何检测给定文件是否为 CSV 文件?或者至少我怎样才能确保它不是二进制文件?
我正在使用A Fast CSV Reader库来读取我的 C# 应用程序中的 CSV 文件。但是我在创建CsvReader
对象时遇到了一些麻烦。
CsvReader csv = new CsvReader(new StreamReader("data.csv"), true));
将二进制文件传递给此代码时,不会引发异常,并且输入文件被视为普通 CSV 文件。如何检测给定文件是否为 CSV 文件?或者至少我怎样才能确保它不是二进制文件?
检测文件是文本还是二进制文件很难。绝大多数文本文件也不是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!
}
}