我正在为C#使用elency solutions CSV库来保存和加载文件中的一些数据。
我的代码正确保存并加载,但是当我加载然后尝试保存错误时,说另一个进程正在使用该文件。
加载方法是:
private void loadfile(string name)
{
int key = 696969;
CsvReader read = new CsvReader("data.csv");
try
{
do
{
read.ReadNextRecord();
} while (name != read.Fields[0]);
int decAgain = int.Parse(read.Fields[1], System.Globalization.NumberStyles.HexNumber); //convert to int
int dec = decAgain ^ key;
MessageBox.Show(dec.ToString());
}
catch (Exception)
{
MessageBox.Show("Not Found");
}
read = null;
}
如您所见,我有点处理“读取”对象。
以下是保存方法:
private void savefile(string encrypted, string name)
{
CsvFile file = new CsvFile();
CsvRecord rec = new CsvRecord();
CsvWriter write = new CsvWriter();
rec.Fields.Add(name);
rec.Fields.Add(encrypted);
file.Records.Add(rec);
write.AppendCsv(file, "data.csv");
file = null;
rec = null;
write = null;
}
它总是卡在附加csv上。 我明白这个问题。读者未成功关闭。如何正确关闭文件?
注意:我已经尝试了read.Dispose()
,但它无效。
你能帮帮我吗?
此致
答案 0 :(得分:0)
使用use自动处理对象。它可以解决您的问题。
private void savefile(string encrypted, string name)
{
using(CsvFile file = new CsvFile())
{
using(CsvRecord rec = new CsvRecord())
{
using(CsvWriter write = new CsvWriter())
{
rec.Fields.Add(name);
rec.Fields.Add(encrypted);
file.Records.Add(rec);
write.AppendCsv(file, "data.csv");
}
}
}
}