2017-05-20 2 views
0

Ich versuche, eine Zeile aus einer Textdatei zu löschen, indem Sie auf die aufgelistete Zeichenfolge in einer ListView klicken, aber ich bekomme einen Fehler.Fehler beim Versuch, Zeile aus Textdatei aus ListView Item zu löschen Klicken Sie auf - Android C#

Verfahren ich verwende ist, die Textfile Linien in einer Line<string> lines Variable zu speichern und das Textfile überschreiben, indem die Datei leer zu machen, die die Line<string> lines zurück in die Datei zu speichern.

Liniencode löschen:

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(); 

     } 
    } 
} 

Der Fehler Ich erhalte ist unten dargestellt: error

Antwort

1

Sie können keine Datei zum Lesen öffnen und gleichzeitig schreiben. Was Sie tun müssen, ist zuerst den Inhalt zu lesen, schließen Sie den Leser und dann erstellen Sie einen Schriftsteller und schreiben Sie Zeug zurück in die Datei.

Eine andere Möglichkeit ist, in eine völlig andere temp Datei zu schreiben und dann die ursprüngliche Datei durch die temporäre Datei zu ersetzen.

Oder öffnen Sie die Datei zum Lesen und Schreiben:

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

Oh, ich verstehe! Ich werde es versuchen, sobald ich kann. – CodePlague

+0

Wie genau würde ich lesen, und die Datei ersetzen/überschreiben? – CodePlague

Verwandte Themen