Benutzer mit den meisten Antworten
Datei läßt sich nicht öffnen...

Frage
-
Hallo zusammen,
ich arbeite mit VB2010 unter XP und habe folgendes Problem:
Nach dem Start meines Programms frage ich ab, ob eine bestimmte Datei existiert, wenn nicht, wird sie angelegt mit folgenden Code
If File.Exists(Application.StartupPath & "\protokoll.txt") = False Then
File.Create(Application.StartupPath & "\protokoll.txt", FileOptions .RandomAccess)
End If
Etwas weiter im Programm möchte ich dann diese leere Datei öffnen mit
sText = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\protokoll.txt")
"Der Prozess kann nicht auf die Datei ... zu greifen, da sie von einem anderen Prozess verwendet wird."Welcher andere Prozess ist das? Wie vermeide ich diese Fehlermeldung?
Danke fürs Nachdenken.
Gruß
Manfred
- Bearbeitet StudioM Freitag, 23. September 2011 08:36
- Bearbeitet Robert BreitenhoferModerator Freitag, 23. September 2011 13:56 Formatierung
Antworten
-
Hallo Manfred,
File.Create erstellt eine neue Datei und liefert den geöffneten Stream dieser Datei, so dass Du in diese Datei schreiben kannst. Es ist also Dein eigener Prozess, der die Datei in Beschlag hält. Du musst die Datei nach dem Create wieder schließen, wenn Du diesen Fehler vermeiden möchtest:
File.Create(Application.StartupPath & "\protokoll.txt", FileOptions.RandomAccess).Dispose()
Ist aber wenig sinnvoll, insbesondere der Versuch eine leere Datei lesen zu wollen. Sinnvoller erscheint da, die Datei nur dann zu lesen, wenn sie auch existiert:Und die Datei dann auch nur zu erstellen, wenn etwas hineingeschrieben wird. Leere Dateien braucht kein Mensch.Dim lPath As String = Path.Append(Application.StartupPath, "protokoll.txt") If File.Exists(lPath) Then sText = My.Computer.FileSystem.ReadAllText(lPath) End If
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de- Als Antwort markiert Robert BreitenhoferModerator Freitag, 23. September 2011 13:57
Alle Antworten
-
Hallo Manfred,
File.Create erstellt eine neue Datei und liefert den geöffneten Stream dieser Datei, so dass Du in diese Datei schreiben kannst. Es ist also Dein eigener Prozess, der die Datei in Beschlag hält. Du musst die Datei nach dem Create wieder schließen, wenn Du diesen Fehler vermeiden möchtest:
File.Create(Application.StartupPath & "\protokoll.txt", FileOptions.RandomAccess).Dispose()
Ist aber wenig sinnvoll, insbesondere der Versuch eine leere Datei lesen zu wollen. Sinnvoller erscheint da, die Datei nur dann zu lesen, wenn sie auch existiert:Und die Datei dann auch nur zu erstellen, wenn etwas hineingeschrieben wird. Leere Dateien braucht kein Mensch.Dim lPath As String = Path.Append(Application.StartupPath, "protokoll.txt") If File.Exists(lPath) Then sText = My.Computer.FileSystem.ReadAllText(lPath) End If
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de- Als Antwort markiert Robert BreitenhoferModerator Freitag, 23. September 2011 13:57