c# - 其他进程仍在使用此文件
问题描述
public void button1_Click(object sender, EventArgs e)
{
//string item = ofd.FileName;
ofd.InitialDirectory = "c:\\";
ofd.Filter = "exe files (*.exe)|*.exe";
ofd.Multiselect = true;
ofd.RestoreDirectory = true;
if (ofd.ShowDialog() == DialogResult.OK)
{
listBox1.Items.Clear();
string tmp = Path.Combine(Path.GetDirectoryName(listBox2.GetItemText(listBox2.Items)), "\\inputdata.txt");
File.Create(tmp);
using (File.Open(tmp, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
{
;
foreach (string item in ofd.FileNames)
{
string date = Path.GetFileName(item.Substring(10, 16));
string ite = item.Substring(0, item.IndexOf(".h2"));
listBox1.Items.Add(item);
if (File.ReadAllText(tmp).Contains(Path.GetFileName(item).Substring(10, 16)))
{
File.AppendAllText(tmp, Environment.NewLine);
}
if (item.IndexOf("MOD10A") >= 0)
{
if (File.ReadAllText(tmp).IndexOf(date) < 0)
{
File.AppendAllText(tmp, ite.Replace("MOD10A1.A", "ter_"));
}
}//
if (item.IndexOf("MYD10A") >= 0)
{
if (File.ReadAllText(tmp).IndexOf(date) < 0)
{
File.AppendAllText(tmp, ite.Replace("MYD10A1.A", "Aqu_"));
}
}
File.AppendAllText(tmp, ", " + item);
}
}
}
}
listbox2 具有我从 openfiledialog 获得的文件名。像 C:\Program Files (x86)\Microsoft\file.exe
当我调试这个程序时。发生错误。消息是该进程无法访问“c:\inputdata.txt”,因为它正被另一个进程使用。
我不明白为什么 inputdata.txt 位于 c:\ 以及为什么会发生错误。
这个错误的原因是什么?
解决方案
使用后必须关闭 FileStream。看看这个: 在 File.Create https://msdn.microsoft.com/en-us/library/aa328800(v=vs.71).aspx之后关闭文件
推荐阅读
- karate - 单击不使用组合框向下箭头按钮空手道 UI 测试
- angular - Angular 9 SSR - 我们可以为项目中的一个模块执行 SSR 吗?
- javascript - 使用 react-select 将值传递给状态
- bash - 在 bash 脚本中打印数组
- cassandra - 如何为 Apache Cassandra 编写自定义 Snitch?
- assembly - 数据溢出时标志寄存器中的 CF、OF
- php - PHP从字符串而不是字符中获取单词数
- c# - 绑定到 blobtriggered 函数中的 blob
- r - R中的加权F检验
- ios - 如何在颤动中重定向到iOS上的whatsapp