VB.NET | txt Datei erstellen / beschreiben

Habe non folgendes Problem / Frage:

Ich würde gerne eine Textdatei erstellen lassen und die dann automatisch mit text befüllen lassen. Habe auch shcon gegooglt und ausprobiert. Das erstellen klappt soweit aber beim beschreiben sagt er mit dir Datei wäre von einem anderen prozess belegt, ob wohl sie nicht auf ist.

Hier meine Funktion:
Code:
Public Sub SaveLogFile(ByRef DateiInhalt As String)
        Dim Pfad As String = frmLogViewer.LogFilePfad & "\" & Date.Today() & "\"
        Dim Dateiname As String = TimeOfDay.Hour() & "." & TimeOfDay.Minute & "Uhr.txt"
        
        If Directory.Exists(Pfad) = True Then
            File.Create(Pfad & Dateiname)
        Else
            Directory.CreateDirectory(Pfad)
            File.Create(Pfad & Dateiname)
        End If


        Dim sFilePathe As String = frmLogViewer.LogFilePfad & "\" & Date.Today() & "\" & TimeOfDay.Hour() & "." & TimeOfDay.Minute & "Uhr.txt"
        Dim streami As FileStream = New FileStream(sFilePathe, FileMode.Append)
        Dim cfile As StreamWriter = New StreamWriter(streami, System.Text.Encoding.Default)

        cfile.WriteLine(DateiInhalt)
    End Sub
 
Unter VB6 war das Beschreiben noch über einen Textstream möglich. Google mal danach, sollte sowas eigentlich auch bei VB.Net geben.
Das hier sollte dir u.U. weiterhelfen um auf Textstream umzusteigen.
 
Hi,

der fehler liegt eher in File.Create(Pfad & Dateiname), denn diese statische methode liefert bereits ein geöffneten filestream zurück.

MfG
 
Ja hast recht. Habs kurz getestet.
Hier der richtige Code:
Code:
    Public Sub SaveLogFile(ByRef DateiInhalt As String)
      Dim Pfad As String = frmLogViewer.LogFilePfad & "\" & Date.Today() & "\"
        Dim Dateiname As String = TimeOfDay.Hour() & "." & TimeOfDay.Minute & "Uhr.txt"

        Dim streami As FileStream
        If Directory.Exists(Pfad) = True Then
            streami = File.Create(Pfad & Dateiname)
        Else
            Directory.CreateDirectory(Pfad)
            streami = File.Create(Pfad & Dateiname)
        End If

        Dim cfile As StreamWriter = New StreamWriter(streami, System.Text.Encoding.Default)

        cfile.WriteLine(DateiInhalt)
        cfile.Close()
    End Sub
 
Danke für die schnelle Hilfe.
Habe nen bissl im VS2005 rumgeguckt bei den Funktionen (ein hoch auf IntelliSense) und hab es nun gelöst anders gelöst:

Code:
Public Sub SaveLogFile(ByRef DateiInhalt As String, ByRef SenderDesLogs As String)
        Dim Pfad As String = frmLogViewer.LogFilePfad & "\" & Date.Today() & "\"
        Dim Dateiname As String = SenderDesLogs & "-" & TimeOfDay.Hour() & TimeOfDay.Minute & ".txt"

        If Directory.Exists(Pfad) = True Then
            File.AppendAllText(Pfad & Dateiname, DateiInhalt)
        Else
            Directory.CreateDirectory(Pfad)
            File.AppendAllText(Pfad & Dateiname, DateiInhalt)
        End If
    End Sub

File.AppendAllText hat den Vorteil, es öffnet die Datei und / oeder erstellt diese wenn es diese nicht gibt. Da ich dei Dateien eh nur einmal erstelle und beschreibe, muss ich die File auch nicht schließen.

Dennoch vielen Dank an die Hilfen :)
 
Zurück
Oben