2017-05-20 56 views
0

我想通過單擊列表視圖中列出的字符串項來刪除文本文件中的一行,但出現錯誤。嘗試從ListView中的TextFile中刪除行時發生錯誤點擊 - Android C#

我正在使用的方法是將TextFile行存儲在Line<string> lines變量中,並通過使文件爲空來覆蓋文本文件,將Line<string> lines存儲迴文件中。

刪除行代碼:

private void lvNotes_ItemSelected(object sender, AdapterView.ItemClickEventArgs e) 
{ 
    //Where I want the Line to be deleted! 

    string toast = "Deleted: " + notesList.GetItemAtPosition(e.Position); 
    Toast.MakeText(this, toast, ToastLength.Long).Show(); 

    string path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); 
    string filename = Path.Combine(path, "test.txt"); 

    List<string> lines = new List<string>(); 

    using (StreamReader streamReader = new StreamReader(filename)) 
    { 
     // 3 
     // Use while != null pattern for loop 
     string line; 
     while ((line = streamReader.ReadLine()) != null) 
     { 
      // 4 
      // Insert logic here. 
      // ... 
      // "line" is a line in the file. Add it to our List. 
      lines.Add(line); 
     } 

     using (StreamWriter swOvewrite = new StreamWriter(filename)) 
     { 
      File.WriteAllText(filename, ""); 
      swOvewrite.WriteLine(lines); 
      swOvewrite.Close(); 

      UpdateList(); 

     } 
    } 
} 

我得到的錯誤如下所示: error

回答

1

您無法打開文件進行讀取,並同時寫入。你需要做的是首先閱讀這些內容,關閉閱讀器,然後創建一個作者並將其寫回到文件中。

另一種方法是寫一個完全不同的temp文件,然後用臨時文件替換原始文件。

或打開文件進行讀取和寫入:

FileStream s2 = new FileStream("path", FileMode.Open, FileAccess.ReadWrite, FileShare.None); 
+0

哦,我明白了!我會盡快嘗試。 – CodePlague

+0

我如何閱讀,並替換/覆蓋文件? – CodePlague

相關問題