C# CsvHelper不';无法按预期写入文件
下面是我正在使用的代码,我希望在循环的每次迭代过程中,每一行都会写入文件。我发现,如果我使用ctrl-c提前结束程序,或者只是关闭窗口,那么文件是空的 我需要经常写入文件,我有33k项要添加到文件中,在33k项添加到CsvWriter之前,几乎不可避免地会出现一些错误。如果我将循环短路到20项,然后让它完成,则输出文件是正确的。我如何解决这个问题C# CsvHelper不';无法按预期写入文件,c#,csvhelper,C#,Csvhelper,下面是我正在使用的代码,我希望在循环的每次迭代过程中,每一行都会写入文件。我发现,如果我使用ctrl-c提前结束程序,或者只是关闭窗口,那么文件是空的 我需要经常写入文件,我有33k项要添加到文件中,在33k项添加到CsvWriter之前,几乎不可避免地会出现一些错误。如果我将循环短路到20项,然后让它完成,则输出文件是正确的。我如何解决这个问题 int i = 0; IList<string> pcodes = FindAutobidPcodes(); using (StreamW
int i = 0;
IList<string> pcodes = FindAutobidPcodes();
using (StreamWriter sw = new StreamWriter($"HPH_Catalog_{DateTime.Now.Ticks}.csv"))
using (CsvWriter cw = new CsvWriter(sw, CultureInfo.InvariantCulture))
{
cw.Configuration.RegisterClassMap<ProductMap>();
foreach (string code in pcodes)
{
string search = $"&search=%7b\"catalog\"%3a\"{catalog}\"%2c\"text\"%3a%7b\"{code}\"%3a\"{code}\"%7d%7d";
searchQuery.Query = $"{RandomString()}{limit}{page}{search}{gtemplate}&token={token}";
WebPage webPage = QueryProductData(searchQuery.ToString());
cw.WriteRecord(Product.ParseJSON(webPage));
cw.NextRecord();
i++;
if(i == 20) { return; }
}
}
inti=0;
IList pcodes=FindAutobidPcodes();
使用(StreamWriter sw=newstreamwriter($“HPH_目录{DateTime.Now.Ticks}.csv”))
使用(CsvWriter cw=新的CsvWriter(sw,CultureInfo.InvariantCulture))
{
cw.Configuration.RegisterClassMap();
foreach(pcodes中的字符串代码)
{
字符串搜索=$“&search=%7b\'catalog\%3a\'{catalog}\%2c\'text\%3a%7b\'{code}\%3a\{code}\%7d%7d”;
Query=$“{RandomString()}{limit}{page}{search}{gtemplate}&token={token}”;
WebPage WebPage=QueryProductData(searchQuery.ToString());
cw.WriteRecord(Product.ParseJSON(网页));
cw.NextRecord();
i++;
如果(i==20){return;}
}
}
您可以在每次迭代后刷新StreamWriter,例如:
static void Main(string[] args)
{
using (StreamWriter sw = new StreamWriter($"HPH_Catalog_{DateTime.Now.Ticks}.csv"))
using (CsvWriter cw = new CsvWriter(sw, CultureInfo.InvariantCulture))
{
for (int i = 0; i < 34000; i++)
{
cw.WriteField(i);
cw.NextRecord();
sw.Flush();
System.Threading.Thread.Sleep(100);
}
}
}
static void Main(字符串[]args)
{
使用(StreamWriter sw=newstreamwriter($“HPH_目录{DateTime.Now.Ticks}.csv”))
使用(CsvWriter cw=新的CsvWriter(sw,CultureInfo.InvariantCulture))
{
对于(int i=0;i<34000;i++)
{
cw.WriteField(i);
cw.NextRecord();
sw.Flush();
系统线程线程睡眠(100);
}
}
}
您还可以将每个循环的内部foor封装到try语句中-如果循环时出现问题,则在catch语句中刷新和处置。我不确定,但您可以创建一个单独的文件并继续复制。我不使用CsvWriter,只需使用StreamWriter写入,并确保使用flush()每次写入后,so结果将进入文件。