我需要從文本文件中刪除一行。問題是,當我嘗試刪除一行時,我必須按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