c# - (已解决)IO异常 进程无法访问该文件,因为它正在被另一个进程使用
问题描述
我正在尝试使用我的程序从 txt 文件中删除一行,但是程序打开了文本文件,所以我不能。我该怎么办?
private void btnDeleteTransaction_Click(object sender, EventArgs e)
{
string line = null;
string delete = txtDeleteTransId.Text;
using (reader = new StreamReader(txtFilePath.Text))
{
try {
using (writer = new StreamWriter(txtFilePath.Text, true))
{
while ((line = reader.ReadLine()) != null)
{
if (String.Compare(line + "|", delete) == 0)
continue;
writer.WriteLine(line);
}
}
}
catch (Exception ex)
{
txtMessages.Text = "exception deleting transaction: " + ex.Message;
}
}
}
下面想通了。
解决方案
我很笨,试图从读者那里写你做不到的。如果有人像我一样新,这是我的工作代码。
private void btnDeleteTransaction_Click(object sender, EventArgs e)
{
List<string> records = new List<string>();
found = false;
using (reader = new StreamReader(txtFilePath.Text))
{
while (!reader.EndOfStream)
{
record = reader.ReadLine();
if (record.StartsWith(txtDeleteTransId.Text + "|"))
{
found = true;
}
else
{
records.Add(record);
}
}
if (!found)
{
txtMessages.Text = "Record ID was not found";
return;
}
}
try
{
using (writer = new StreamWriter(txtFilePath.Text, false))
{
foreach (var item in records)
{
writer.WriteLine(item);
}
}
txtMessages.Text = "Record deleted";
}
catch (Exception ex)
{
txtMessages.Text = "exception deleting record: " + ex.Message;
}
}
```
推荐阅读
- ansible - json_query 期间的 Ansible 'NoneType' 对象不可迭代”错误
- vue.js - 如何根据 VueJs 中按钮的 change\event 修改计算属性输出?
- json - 我在 Visual Studio 中的 package.json 中出现了一个我无法摆脱的随机 Debug
- python - 为什么在 255 倍时图片会变成紫色?
- logging - 间歇性气流日志丢失
- elixir - 映射 464360 个图像文件以读取和创建元组长生不老药
- python - 有时是列表,有时是字典
- git - 将 Visual Studio git 凭据存储在临时文件中
- if-statement - if 语句 TCL
- c++ - 关于隐式声明的复制构造函数的引用在逻辑上不清楚