Announcement

Collapse
No announcement yet.

Datei überschreiben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datei überschreiben

    guten tag zusammen,

    versuche gerade ein prog zu schreiben, was eine datei byteweise mit leerzeichen überschreibt und anschließend löscht.
    das alles geht über drag and drop..über die form...

    jetzt habe ich ein problem, das mit dem überschreiben geht alles, aber sobald ich die datei danach löschen will, geht es nicht..woran liegt das problem ?

    Code:
    Option Explicit On
    Imports System.IO
    Public Class Form1
    
        Private Sub Form1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
            Dim filenames() As String
            Dim strfile As String
            Dim filesize As Long
    
            If e.Data.GetDataPresent(DataFormats.FileDrop) Then
                filenames = e.Data.GetData(DataFormats.FileDrop)
                strfile = filenames(0)
    
                If File.Exists(strfile) Then
    
                    Dim open As New IO.StreamWriter(strfile)
                    filesize = LOF(strfile)
                    strfile = Space$(filesize)
    
                    Kill(strfile)    'bis zum kill befehl geht alles, da hängt es .. ?!
    
                End If
    
            End If
    
    
        End Sub

  • #2
    Hallo und willkommen,

    für die Diagnose wäre die Fehlermeldung praktisch.

    Ist hier aber kein Problem denn ich kann mir die IOException gut vortstellen.
    Das Problem ist dass der StreamWriter noch geöffnet ist und somit die Datei exklusiv für sich hat. Ein Löschen kann daher nicht funktionieren.

    Abhilfe: Schließen des StreamWriters vor dem Löschvorgang.

    Generell empfiehlt sich die Verwendung von Using.


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      es kommt keine fehlermeldung, der überschreibt sie und dann passiert einfach nichts mehr...
      ja ich dachte mir schon, dass ich sie nicht löschen kann, weil der streamwrite noch darauf zugreift. wie kann ich diesen denn wieder schließen ?

      open.close() funzt irgendwie nicht ...
      Zuletzt editiert von yellowblue; 27.07.2009, 19:40.

      Comment


      • #4
        wie kann ich diesen denn wieder schließen ?
        Mit der Close-Methode.


        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          [highlight=vbnet]
          If File.Exists(strfile) Then
          Using SwFile as new IO.StreamWriter(strfile)
          SwFile.Write(Space(SwFile.BaseStream.Length))
          SwFile.Close()
          End Using
          IO.File.Delete(strfile)
          End If
          [/highlight]
          damit solltest du erreichen was du brauchst
          Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

          Comment


          • #6
            @das-d: Bei Verwendung von Using ist nicht unbedingt nötig den StreamWriter explizit zu schließen denn dies erledigt auch das Using (bzw der vom Kompiler erzeugte Code und geschlossen wird dabei in der Dispose-Methode).


            mfG Gü
            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

            Comment


            • #7
              danke für die Bestätigung dessen dass ich schon oft Vermutet hab. Ich habs nur immer fürs gute Gewissen gemacht aber dann kann ich mir das ja doch sparen
              Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

              Comment


              • #8
                fürs gute Gewissen gemacht aber dann kann ich mir das ja doch sparen
                Meinst du jetzt dein Gewissen oder das Close ?


                mfG Gü
                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                Comment


                • #9
                  das Close wobei ich grad überlege ob es nicht manchmal lustig wär kein Gewissen zu haben xD
                  Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

                  Comment

                  Working...
                  X