none
Speicherung einer .txt Datei mit Datum und Uhrzeit als Name RRS feed

  • Frage

  • Hi Leute,

    ich möchte den Inhalt einer LstBox in eine .txt Datei speichern und als Namen für die Datei das Datum und die Uhrzeit verwenden. Das klappt bisher schon ganz gut. Einziges Problem, ich bekomme kein .txt an den Dateinamen. Die dafür verantwortliche Zeile in meinem Code sieht folgendermasen aus: 

    Dim oFi As FileStream = New FileStream("C:\Daten\Dokumentationen\S7-Projekt\" & Datum, FileMode.Create)

    Hat jemand eine Idee, wie ich jetzt hinter ...& Datum... die Endung .txt ranbekomme? Weiter würde ich diese Speicherung gerne zyklisch ausführen, also ab Programmstart unendlich lange. Kann mir dabei vielleicht jemand einen Tip geben? Danke für eure Hilfe!

    VBDave

    Donnerstag, 22. Juli 2010 13:47

Antworten

  • Die aneinanderreihung von Strings mit dem "&" konnte ich noch nie leiden.

    Deswegen diese Variante.

     Dim Ziel As String = "C:\Daten\Dokumentationen\S7-Projekt\"
     Dim Pfad As String = String.Format("{0}{1:ddMMyyyy}.txt", Ziel, DateTime.Now)
     Dim oFi As FileStream = New FileStream(Pfad, FileMode.Create)

    oder damit man im Explorer nachher besser die Dateien sortieren kann diese Variante des Datums

       Dim Pfad As String = String.Format("{0}{1:yyyyMMdd}.txt", Ziel, DateTime.Now)

    Donnerstag, 22. Juli 2010 16:02
  • Hallo,

    ich möchte den Inhalt einer LstBox in eine .txt Datei speichern und als Namen für die Datei das Datum und die Uhrzeit verwenden. Das klappt bisher schon ganz gut. Einziges Problem, ich bekomme kein .txt an den Dateinamen. Die dafür verantwortliche Zeile in meinem Code sieht folgendermasen aus: 

    Dim oFi As FileStream = New FileStream("C:\Daten\Dokumentationen\S7-Projekt\" & Datum, FileMode.Create)

    Hat jemand eine Idee, wie ich jetzt hinter ...& Datum... die Endung .txt ranbekomme?

    Im einfachsten Fall:

    Dim  oFi As FileStream  = New FileStream("C:\Daten\Dokumentationen\S7-Projekt\"  & Datum & ".txt", FileMode.Create)

    Weiter würde ich diese Speicherung gerne zyklisch ausführen, also ab Programmstart unendlich lange.

    Zyklisch meint sicher in bestimmten Zeitintervallen? Dafür kannst Du einen Timer verwenden und im Tick Ereignis dieses Timers, die Speicherung durchführen.



    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Donnerstag, 22. Juli 2010 13:55
    Moderator
  • Hallo VBDave,

    ganz konkret in etwa so

    Imports System.IO

    Public Class Form1

      Dim mtimTimer As Timer

      Private Sub Write_File(ByVal pstrFile_Content As String)
        Dim oFi As FileStream = New FileStream _
                                           ("C:\Daten\Dokumentationen\S7-Projekt\" & Now.ToString.Replace(CChar(":"), CChar(" ")) & ".txt", FileMode.Create)
        oFi.Write(System.Text.Encoding.Unicode.GetBytes(pstrFile_Content), _
                      0, _
                      System.Text.Encoding.Unicode.GetBytes(pstrFile_Content).Count)
        oFi.Close()
      End Sub

      Private Sub timTimerer_Tick(ByVal myObject As Object, _
                                               ByVal myEventArgs As EventArgs)

         ' Oder was auch immer...  
         Write_File(Now.ToString)
      End Sub

      Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        mtimTimer = New Timer
        With mtimTimer
          .Start()
          ' 5 Sekunden
          .Interval = 5000
        End With
        AddHandler mtimTimer.Tick, AddressOf timTimerer_Tick
      End Sub

      Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
        RemoveHandler mtimTimer.Tick, AddressOf timTimerer_Tick
        mtimTimer.Stop()
        mtimTimer.Dispose()
        mtimTimer = Nothing
      End Sub

    End Class

     

    Donnerstag, 22. Juli 2010 14:28

Alle Antworten

  • Hallo,

    ich möchte den Inhalt einer LstBox in eine .txt Datei speichern und als Namen für die Datei das Datum und die Uhrzeit verwenden. Das klappt bisher schon ganz gut. Einziges Problem, ich bekomme kein .txt an den Dateinamen. Die dafür verantwortliche Zeile in meinem Code sieht folgendermasen aus: 

    Dim oFi As FileStream = New FileStream("C:\Daten\Dokumentationen\S7-Projekt\" & Datum, FileMode.Create)

    Hat jemand eine Idee, wie ich jetzt hinter ...& Datum... die Endung .txt ranbekomme?

    Im einfachsten Fall:

    Dim  oFi As FileStream  = New FileStream("C:\Daten\Dokumentationen\S7-Projekt\"  & Datum & ".txt", FileMode.Create)

    Weiter würde ich diese Speicherung gerne zyklisch ausführen, also ab Programmstart unendlich lange.

    Zyklisch meint sicher in bestimmten Zeitintervallen? Dafür kannst Du einen Timer verwenden und im Tick Ereignis dieses Timers, die Speicherung durchführen.



    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Donnerstag, 22. Juli 2010 13:55
    Moderator
  • Hallo VBDave,

    ganz konkret in etwa so

    Imports System.IO

    Public Class Form1

      Dim mtimTimer As Timer

      Private Sub Write_File(ByVal pstrFile_Content As String)
        Dim oFi As FileStream = New FileStream _
                                           ("C:\Daten\Dokumentationen\S7-Projekt\" & Now.ToString.Replace(CChar(":"), CChar(" ")) & ".txt", FileMode.Create)
        oFi.Write(System.Text.Encoding.Unicode.GetBytes(pstrFile_Content), _
                      0, _
                      System.Text.Encoding.Unicode.GetBytes(pstrFile_Content).Count)
        oFi.Close()
      End Sub

      Private Sub timTimerer_Tick(ByVal myObject As Object, _
                                               ByVal myEventArgs As EventArgs)

         ' Oder was auch immer...  
         Write_File(Now.ToString)
      End Sub

      Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        mtimTimer = New Timer
        With mtimTimer
          .Start()
          ' 5 Sekunden
          .Interval = 5000
        End With
        AddHandler mtimTimer.Tick, AddressOf timTimerer_Tick
      End Sub

      Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
        RemoveHandler mtimTimer.Tick, AddressOf timTimerer_Tick
        mtimTimer.Stop()
        mtimTimer.Dispose()
        mtimTimer = Nothing
      End Sub

    End Class

     

    Donnerstag, 22. Juli 2010 14:28
  • Die aneinanderreihung von Strings mit dem "&" konnte ich noch nie leiden.

    Deswegen diese Variante.

     Dim Ziel As String = "C:\Daten\Dokumentationen\S7-Projekt\"
     Dim Pfad As String = String.Format("{0}{1:ddMMyyyy}.txt", Ziel, DateTime.Now)
     Dim oFi As FileStream = New FileStream(Pfad, FileMode.Create)

    oder damit man im Explorer nachher besser die Dateien sortieren kann diese Variante des Datums

       Dim Pfad As String = String.Format("{0}{1:yyyyMMdd}.txt", Ziel, DateTime.Now)

    Donnerstag, 22. Juli 2010 16:02
  • Hi Leute,

    super! Danke für eure vielen nützlichen Tips und exakten Codebeispiele! Hat alles bestens geklappt!

    VBDave

    Freitag, 23. Juli 2010 09:11