Datei löschen verweigert

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Datei löschen verweigert

    Hallo liebe Forum-leser und -beantworter

    Ich sitze jetzt seit gestern dran und komme einfach nicht da hinter wieso er meine Datei nicht löschen will
    Also den Fehler kenne ich aber ich verstehe das wieso nicht

    VB.NET-Quellcode

    1. Private Sub btn_clearpic_Click(sender As System.Object, e As System.EventArgs) Handles btn_clearpic.Click
    2. My.Settings.telebuchbild = lbl_pb.Text
    3. lbl_pb.Text = "X:\tests\img\keinbild.jpg"
    4. Try
    5. pb_mitarbeiter.Image = New Bitmap(lbl_pb.Text)
    6. Catch ex As Exception
    7. End Try
    8. ' Kill(My.Settings.telebuchbild)
    9. 'My.Computer.FileSystem.DeleteFile(My.Settings.telebuchbild)
    10. MsgBox("text")
    11. bildweg()
    12. End Sub
    13. Private Sub bildweg()
    14. Kill(My.Settings.telebuchbild)
    15. Dim fi As New System.IO.FileInfo(My.Settings.telebuchbild)
    16. fi.Delete()
    17. End Sub
    das ist der Code (2 varianten)

    also es geht um ein Telefonbuch wo ich auch Bilder zu Personen hinterlegen kann diese Bilder speichert das Programm auch schon in den gewünschten Ordner etc das funktioniert also alles

    zur Vorgehensweise:

    das prog ruft alle Daten ab incl. Bildadresse die in lbl_pb hinterlegt wird (zeigt er auch alles an wie er soll)
    doch wenn ich jetzt sage das der Eintrag gelöscht werden soll oder ein anderes bild rein soll will ich das das Programm das bild aus dem Verzeichnis löscht
    und genau da bekomme ich dann einen Abbruch (da hier noch ohne try)

    Quellcode

    1. Kill(My.Settings.telebuchbild)
    bekomme ich die aussage IOExeption wurde nicht behandelt Der Prozess kann nicht auf die Datei C:\ ... zugreifen, da sie von einem anderen Prozess verwendet wird.
    Das einzige Programm das diese Datei verwendet ist meines ...
    ich habe es auch schon versucht ohne alle Vorschritte aber es will nicht

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Zero123“ ()

    kill ist auch blödsinn, sowas ist afaik wenn überhaupt für prozesse.

    VB.NET-Quellcode

    1. Dim fi As New IO.FileInfo("c:\bild.jpg")
    2. fi.Delete()


    Achte darauf, dass dein Programm als Admin gestartet wird bzw das Visual Studio als Admin gestartet ist, damit die Application ebenfalls entsprechende Rechte hat. Ohne diese geht unter Windows7 was Dateizugriffe angeht sogut wie nichts^^
    den kill hatte ich nur zum test eingebaut um zu schauen ob es damit vielleicht geht aber der fehelr bleibt

    und springt nun bei

    VB.NET-Quellcode

    1. fi.delete()
    an fehlerbeschreibung ist exakt das gleiches

    Als admin habe ich das programm bereits aufgeführt ... ersultat ist das gleiche

    genau wenn ich an stelle meines my.settings.telebuchbild den exakten pfad einsetze bekomme ich den fehler

    Zero123 schrieb:

    VB.NET-Quellcode

    1. pb_mitarbeiter.Image = New Bitmap(lbl_pb.Text)
    Diese Zeile claimed Dir die Datei, so dass Du sie nicht löschen kannst.
    Öffne die Datei mit Using in einem FileStream und rufe den entsprechenden Bitmap-Konstruktor auf.
    Dann wirst Du die Datei löschen können.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB.NET-Quellcode

    1. lbl_pb.Text = "X:\tests\img\keinbild.jpg"
    2. Trypb_mitarbeiter.Image = New Bitmap(lbl_pb.Text)

    die datei auf x ist ein anderes bild da ich das schon vermutet hatte dem entsprechend lade ich erst ein anderes bild in die pb_mitarbeiter um eine übersicht zu schaffen:
    Bild1 <<< soll gelöscht werden
    zuvor lädt er bild1 in die pb_mitarbeiter
    dann klicke ich auf löschen
    setzte den Pfad von bild1 in die my settings

    VB.NET-Quellcode

    1. My.Settings.telebuchbild = lbl_pb.Text
    ersetzte meinen pfad durch den neuen Pfad von Bild2

    VB.NET-Quellcode

    1. lbl_pb.Text = "X:\tests\img\keinbild.jpg"


    lade das neue bild2 in die pb_mitarbeiter

    VB.NET-Quellcode

    1. Trypb_mitarbeiter.Image = New Bitmap(lbl_pb.Text)
    2. Catch ex As ExceptionEnd Try

    und anschließend soll die datei deren pfad in der my.settings steht gelöscht werden

    VB.NET-Quellcode

    1. Dim fi As New System.IO.FileInfo("C:\ .....\Debug\Img\Personen\Koala.jpg")
    2. fi.Delete()

    dem entsprechnd kann die datei doch eigentlich garnicht mehr in verwendung sein durch meine pb_mitarbeiter

    Zero123 schrieb:

    dem entsprechnd kann die datei doch eigentlich garnicht mehr in verwendung sein durch meine pb_mitarbeiter
    Was willste uns jetzt damit sagen?
    Haste Dir dies mal angesehen:

    RodFromGermany schrieb:

    Öffne die Datei mit Using in einem FileStream und rufe den entsprechenden Bitmap-Konstruktor auf.
    Dann wirst Du die Datei löschen können.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    dann vereinfache dein Problem: mach einen Button, wenn dieser geklickt wird, dann soll die Datei gelöscht werden. Funktioniert das, dann liegt es an dem "drumherum" - funktioniert es nicht, dann:
    a) hast du keine Admin-Rechte
    b) ist die Datei blockiert

    Zero123 schrieb:

    Das die datei die gelöscht werden soll ga nicht mehr in verwendung ist!
    Offensichtlich doch, oder: Siehe Post von @FreakJNS:.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Öffne die Datei mit Using in einem FileStream und rufe den entsprechenden Bitmap-Konstruktor auf.
    Dann wirst Du die Datei löschen können.
    könntest du mir hier helfen habe mit filestrem bis jetzt nur bei txt datein gearbeitet

    RodFromGermany schrieb:

    Offensichtlich doch,
    somit stimmt das ... warum ka

    FreakJNS schrieb:

    dann vereinfache dein Problem: mach einen Button, wenn dieser geklickt wird, dann soll die Datei gelöscht werden.
    ließ sich mit einem anderen prog ohne probs löschen
    Es geht um 2 Ecken:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Dim bmp As Bitmap
    3. Dim path = "c:\Temp\xxx.jpg"
    4. Using fs As New System.IO.FileStream(path, IO.FileMode.Open)
    5. bmp = New Bitmap(fs)
    6. Dim bmp2 = New Bitmap(bmp)
    7. Panel1.BackgroundImage = bmp2
    8. End Using
    9. System.IO.File.Delete(path)
    10. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    noBlubb schrieb:

    Was passiert eigentlich,
    wenn Du den Code nimmst und noch alles verbesserst, was zu verbessern geht?
    Er ist dann veraltet. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!