VB 2010 - Problem txt-Datei anlegen und schreiben

Sinix

Well-known member
Beiträge
1.588
Punkte Reaktionen
216
Zuviel Werbung?
->Hier kostenlos registrieren
Hi, I need help !

Ich möchte in Visual Basic eine txt-Datei anlegen und etwas reinschreiben.
Leider tritt immer wieder der Fehler, wie im Anhang zu sehen auf
Nach dem Erstellen mit Create kommt beim Öffnen ein Abbruch mit dem
Hinweis das bereits ein anderer Prozess auf die Datei zugreift.
Aber ich erstelle die Datei ja gerade neu, also kann ja kaum ein anderer Prozess zugreifen.
Was ist hier faul?
Kann mir jemand helfen, gerne auch anderen Weg?

MfG MK
 

Anhänge

  • Fehler_VB_Write.JPG
    Fehler_VB_Write.JPG
    100,7 KB · Aufrufe: 27

Lupo

Well-known member
Beiträge
338
Punkte Reaktionen
27
Bei mir sieht das so aus :
Code:
 ''' <summary>
    ''' Laden der Programm-Parameter  
    ''' </summary>
    Public Sub Parameter_Laden()
        Dim Z, varListe() As String
        Dim i As Integer
        Dim Verzeichnis As String = GetFolderPath(SpecialFolder.ApplicationData) 
        If Not FolderExists(Verzeichnis) Then
            My.Computer.FileSystem.CreateDirectory(Verzeichnis)
        End If
        Dim Datei As String = Verzeichnis + "\Daten.PAR"
        Try
            Dim fs As New FileStream(Datei, FileMode.Open,FileAccess.ReadWrite)
            Dim CSV As New StreamReader(fs)
            For i = 1 To 4
                Z = CSV.ReadLine  '  Header-Zeilen  
            Next
                   CSV.Close()
            RaiseEvent Parameter_geladen()
        Catch ex As Exception
        End Try
    End Sub
    ''' <summary>
    ''' Abspeichern der Programm-Parameter  
    ''' </summary>
    Public Sub Parameter_Speichern()
        Dim Verzeichnis As String = GetFolderPath(SpecialFolder.ApplicationData) 
        If Not FolderExists(Verzeichnis) Then
            My.Computer.FileSystem.CreateDirectory(Verzeichnis)
        End If
        Dim Datei As String = Verzeichnis + "\Daten.PAR"
        Try
            Dim fs As New FileStream(Datei, FileMode.Create, FileAccess.ReadWrite)
            Dim CSV As New StreamWriter(fs)
            CSV.WriteLine("Programm-Parameter :")
            CSV.WriteLine("--------------------")
            CSV.WriteLine("Stand : " + DatumString() + "   " + Strings.Left(TimeString, 5))
            CSV.WriteLine("--------------------")
                CSV.Close()
        Catch ex As Exception
        End Try
    End Sub
    ''' <summary>
    ''' Überprüfen, ob das Zielverzeichnis vorhanden ist  
    ''' </summary>
    Public Function FolderExists(ByVal FolderPath As String) As Boolean
        Dim f As New IO.DirectoryInfo(FolderPath)
        Return f.Exists
    End Function
    ''' <summary>
    ''' Überprüfen, ob die Zieldatei vorhanden ist  
    ''' </summary>
    Public Function FileExists(ByVal FileFullPath As String) As Boolean
        Dim f As New IO.FileInfo(FileFullPath)
        Return f.Exists
    End Function
Sieht auf Grund der anderen Befehle etwas anders aus als bei dir.
Die Sache mit den Namespace-Angaben kannst du durch IMPORTS umgehen. dann wird der Code etwas besser lesbar - finde ich.
 
OP
Sinix

Sinix

Well-known member
Beiträge
1.588
Punkte Reaktionen
216
Zuviel Werbung?
->Hier kostenlos registrieren
Bei mir sieht das so aus :
...
Sieht auf Grund der anderen Befehle etwas anders aus als bei dir.
Die Sache mit den Namespace-Angaben kannst du durch IMPORTS umgehen. dann wird der Code etwas besser lesbar - finde ich.

Danke es funktioniert! :)
Bin nu nicht so der Hochsprachler, hab mal System.IO importiert.
Benutze zu oft "Call", das scheint nicht so günstig :confused:
 

bits'bytes

Well-known member
Beiträge
347
Punkte Reaktionen
53
Hi, I need help !

Was ist hier faul?

MfG MK

Wenns funktioniert ist eh alles gut. Habe nur die Idee dass dir wahrscheinlich einfach ein Close fehlt (vor dem StreamWriter Zugriff).

Die Create Function erzeugt und öffnet die Datei - der StreamWriter ist dann im Prinzip wieder ganz was neues und versucht auf eine geöffnete Datei zuzugreifen.

Nur eine Vermutung....

bg
bb
 
OP
Sinix

Sinix

Well-known member
Beiträge
1.588
Punkte Reaktionen
216
Da liegst du nicht ganz falsch, das wollte ich auch probieren.
Problem ist das ich System.IO.Create mit Call ohne Objekt aufgerufen hatte,
was soll ich dann schließen :ROFLMAO:
 

mogel

Well-known member
Beiträge
68
Punkte Reaktionen
3
Zuviel Werbung?
->Hier kostenlos registrieren
Moin,

Code:
Catch ex As Exception
End Try

bitte wenigstens die Exception ausgeben, sonst sucht ihr euch einen Wolf wenn es plötzlich nicht mehr funktioniert

Code:
Catch ex As Exception
    Console.WriteLine(ex.Message) ' oder so ähnlich
End Try

hand, mogel
 
Oben