我在使用CsvHelper写入内存流时遇到了一些问题。我尝试过刷新流写入器、设置位置和其他所有尝试过的方法。我认为我已经将问题缩小到一个显然失败的简单测试案例中。请问我在这里做错了什么?
public OutputFile GetTestFile()
{
using (var ms = new MemoryStream())
using (var sr = new StreamWriter(ms))
using (var csv = new CsvWriter(sr))
{
csv.WriteField("test");
sr.Flush();
return new OutputFile
{
Data = ms.ToArray(),
Length = ms.Length,
DataType = "text/csv",
FileName = "test.csv"
};
}
}
[TestMethod]
public void TestWritingToMemoryStream()
{
var file = GetTestFile();
Assert.IsFalse(file.Data.Length == 0);
}
编辑正确的答案,供那些在搜索的人使用,这个修正后的代码实际上通过了我的测试。我不知道为什么先写入 StringWriter 然后将其转换为字节可以解决所有疯狂的刷新问题,但现在它可以工作了。
using (var sw = new StringWriter())
using (var csvWriter = new CsvWriter(sw, config))
{
csvWriter.WriteRecords(records);
return Encoding.UTF8.GetBytes(sw.ToString());
}