Der Prozess kann nicht auf die Datei zugreifen

PH234X

Mitglied
Hey.
Ich habe ein Problem.
Und zwar möchte ich eine .txt einlesen lassen, sie verändern und sie dann wider abspeichern.
Nur ich bekomme folgende Fehlermeldung bei meinem Programm:
Der Prozess kann nicht auf die Datei "sites.TXT" zugreifen, da sie von einem anderen Prozess verwendet wird.

Mein Code sieht so aus
Code:
My.Computer.FileSystem.WriteAllText(TextBox1.Text & ".txt", TextBox3.Text & vbNewLine & TextBox2.Text & vbNewLine & TextBox4.Text, False)
        Dim sr As StreamReader = New StreamReader("sites.txt")
        Dim line As String
        Dim i As Integer
        For i = 1 To 1
            line = sr.ReadLine()
        Next
        sites = line
        sites = vbNewLine & TextBox1.Text
        My.Computer.FileSystem.WriteAllText("sites.txt", TextBox3.Text & vbNewLine & TextBox2.Text & vbNewLine & TextBox4.Text, False)

Ich weiß auch woran es liegt und zwar hat VB.NET die Datei noch geöffnet und somit kann man sie nicht abspeichern weil VB sie gerade noch benutzt.
Wie sage ich VB.NET, dass er die Datei jetzt in Ruhe lassen soll. Den Text habich ja ^^

MFG
 
Hi

Nicht VB.NET hat die Datei noch geöffnet sondern deine Anwendung. VB.NET ist nur eine Sprache! ;)

Zum Problem:
Ich geh mal davon aus, dass der Fehler beim zweiten Schreibversuch kommt. Ursache wird der noch offenen StreamReader sein.
Lass diesen mal die verwendeten Ressourcen wieder freigeben (Dispose)
 
Jetzt streiten wir uns um Worte^^

Der Fehler liegt in

Code:
 My.Computer.FileSystem.WriteAllText("sites.txt", TextBox3.Text & vbNewLine & TextBox2.Text & vbNewLine & TextBox4.Text, False)
 
Jetzt streiten wir uns um Worte^^
Weder streiten wir noch sind es nur Worte ;)
Der Fehler liegt in

Code:
 My.Computer.FileSystem.WriteAllText("sites.txt", TextBox3.Text & vbNewLine & TextBox2.Text & vbNewLine & TextBox4.Text, False)
Nico Graichen hat gesagt.:
Ich geh mal davon aus, dass der Fehler beim zweiten Schreibversuch kommt. Ursache wird der noch offenen StreamReader sein.
Lass diesen mal die verwendeten Ressourcen wieder freigeben (Dispose)
 
Nico hat Recht.

Dein StreamReader hält die Datei weiterhin offen.
Daher funktioniert der zweite Schreibvorgang nicht mehr.

Entweder du rufst nach dem Auslesen sr.Dispose aus oder verwendest gleich das using Statment.
Dann wird dafür automatisch für gesorgt, dass beim Verlassen des Using Blocks der Streamreader Disposed wird.

Code:
        Using sr As StreamReader = New StreamReader("sites.txt")
             Dim line As String
             Dim i As Integer
             For i = 1 To 1
                 line = sr.ReadLine()
             Next
             sites = line
             sites = vbNewLine & TextBox1.Text
      End Using
 

Neue Beiträge

Zurück