我需要从文本文件中删除一行。问题是,当我尝试删除一行时,我必须按BtnStergeMedicam两次才能删除。我不知道为什么我必须按两次。从文本文件中删除一行文本
private void BtnStergeMedicam_Click(object sender, EventArgs e)
{
string line;
string line_to_delete = ListAfisMedicam.SelectedItem.ToString();//I take the line
//to delete from ListAfisMedicam
using (StreamReader reader = new StreamReader(@"D:\MyTest.txt"))
{
using (StreamWriter writer = new StreamWriter(@"D:\MyTest2.txt"))
{
while ((line = reader.ReadLine()) != null)
{
if (String.Compare(line, line_to_delete) == 0)
continue;
writer.WriteLine(line);
}
writer.Close();
}
reader.Close();
}
System.IO.File.Copy(@"D:\MyTest2.txt", @"D:\MyTest.txt",true);
ListAfisMedicam.Items.Clear();
string[] lines = System.IO.File.ReadAllLines(@"D:\MyTest.txt");
foreach (string linie in lines)
{
ListAfisMedicam.Items.Add(linie);
}
}
你是什么意思,你必须点击它两次?您单击列表框中的某个项目,单击它,然后再次单击相同的项目并且它可以工作?它是否把它放在你的MyTest2中,而不是复制过来的? 此外,通用编码实践:这不是Java或C++,你可以使用==来比较字符串运算符,并使用()自动关闭和配置流,所以删除您的读取和写入器关闭语句(这就是实际使用) – Dispersia
可能是第一次'string [] lines = System.IO.File.ReadAllLines(@“D:\ MyTest2.txt”);'return 0 lines。尝试调试代码。 – erikscandola
仅供参考,因为您在'using'语句中拥有它们,所以您不需要'关闭'这些流。 – juharr