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