[英]c# How to release a file after read streamwriter / reader
我有一个使用CsvHelper的winform,可以读写。 打开并重新打开它们时,我有几个文件。几次“该进程无法访问文件'D:.csv',因为它正在被另一个进程使用”,因此会出现错误。 无法弄清楚如何修复它。 使用后需要将其关闭,但不知道如何。有人可以帮忙吗?
谢谢
private void btnRead_Click(object sender, EventArgs e)
{
using (OpenFileDialog ofd = new OpenFileDialog() { Filter = "CSV|*.csv", ValidateNames = true })
{
if (ofd.ShowDialog() == DialogResult.OK)
{
var sr = new StreamReader(new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.None));
var csv = new CsvReader(sr);
lunchBindingSource.DataSource = csv.GetRecords<Lunch>().ToString();
lunchBindingSource.DataSource = csv.GetRecords<Lunch>();
{
}
}
}
}
看一下using语句。 它将自动处理关闭流。
将FileStream放在using块中,它将关闭超出范围。
using(var fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.None))
{
var sr = new StreamReader(fs);
var csv = new CsvReader(sr);
//blah blah
}
简短答案:关闭StreamReader / Writer。
var sr = new StreamReader(new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.None));
var csv = new CsvReader(sr);
lunchBindingSource.DataSource = csv.GetRecords<Lunch>();
sr.Close();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.