VisualBasic Bitte um Verbesserung meines Codes

I

iPhiiL

Gast
Hallo,

ich habe eine Frage. Undzwar habe ich jetzt ein bisschen gegooglet und folgenden Code herausgefunden:

Code:
Imports System.IO
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        File.Copy("Desktop\Neues Textdokument1", "Desktop\Admin")
        MsgBox("Die ausgewählte Datei wurde erfolgreich kopiert!", MsgBoxStyle.Information, "Erfolgreich kopiert!")
        File.Delete("Desktop\NeuesTextDokument1.txt")
        MsgBox("Die kopierte Datei wurde erfolgreich gelöscht!", MsgBoxStyle.Information, "Datei erfolgreich gelöscht!")
    End Sub
End Class

Ich habe ihn von einer Seite und habe ihn ein bisschen abgeändert. Ich möchte eine Datei a von Pfad 1 nach Pfad 2 machen und danach Datei a vom Pfad 1 löschen, sodass die Datei a nurnoch in Pfad 2 vorhanden ist. Aber immer wenn ich das Programm debugge und dann Button 1 drücke, kommt folgende Error Nachricht:
Eine Ausnahme (erste Chance) des Typs "System.IO.DirectoryNotFoundException" ist in mscorlib.dll aufgetreten.

Was habe ich falsch gemacht? Könnt ihr mir da weiterhelfen??

Vielen Dank im Voraus !!

Greetz :king:
 
Steht doch da. DirectoryNotFoundException

Der Ordner wird nicht gefunden. Oder die Datei, weiss nich ob das so genau angezeigt ist.

Da ist was mit deinen Pfadangaben inkorrekt. Zumal mir das bei copy ohne .txt spanisch vorkommt.

Relative oder Absolute Pfade.

Normalerweise gibts ne variable Runtime.basepath oder ähnliches damit kann man das ganze dynamisch setzen
 
Das wäre schonmal ein Anfang, glaube aber nicht, dass es so funktioniert. Wenn du relative Pfade benutzt, wird immer das aktuelle Arbeitsverzeichnis vorn dran gesetzt. Wenn du das also debuggst, wird es logischerweise aus dem Projekt-Ordner heraus gestartet, in dem es keinen Desktop-Ordner gibt.

Im Übrigen gibt es die Methode Move, die dein Vorhaben in einem Befehl ausführen würde.
 
Desktop ist kein root directory/Wurzel Verzeichnis unter Windows, das ist und bleibt C:\, D:\, etc auch wenn Windows 7 einen anderen Eindruck vermittelt. Dateien haben unter Windows auch immer eine Dateiendung, auch wenn Windows diese mit vorlieben ausblendet.

Desktop ist ein Ordner unter "c:\users\Benutzername\" bzw "c:\dokumente und Einstellungen\Benutzername\" (bis XP verwendet), wobei dein Benutzername zu ersetzen ist mit einem existierenden Benutzer. Hierdurch wird sichergestellt das jeder Benutzer einen eigenen Daten hat.

In deinem Codebeispiel sucht er im aktuellen Verzeichnis (das wo die exe normal liegt, außer du änderst den Pfad in dem die Datei ausgeführt wird) nach einer datei die er unter ".\Desktop\Neues Textdokument1" (der Punkt steht für das aktuelle Verzeichnis) öffnen kann. Außerdem tipp drauf das hier ein ".txt" fehlt.

Ich nehm an das du das hier auch nicht auf einmal alles verstehen wirst, aber das kommt mit der Zeit, in der man sich mit Windows auseinander setzt :) Ich hoff es hilft dir weiter
 
Selbst wenn es funktioniert ohne Fehlermeldung belügst du dich mit diesem Programm selbst. File.Copy wird ausgeführt und danach wird behauptet dass es erfolgreich war ohne Überprüfung.
Schlimmstenfalls funktioniert das kopieren nicht, dafür aber das löschen. Und dann ist alles weg.
 
gigajum schrieb:
Ich nehm an das du das hier auch nicht auf einmal alles verstehen wirst, aber das kommt mit der Zeit, in der man sich mit Windows auseinander setzt :) Ich hoff es hilft dir weiter

Doch habe es jetzt verstanden. Also du meinst das es praktisch nicht einfach nur "Desktop" gibt sondern halt z.B. "C:\User\Desktop" etc. ?

Habe das mit dem *.txt drangehängt. Ich versuche es jetzt noch einmal.

Vielen Dank trotzdem !!
Ergänzung ()

Habe den Code jetzt nocheinmal überarbeitet.

Der Code sieht jetzt so aus:

Code:
Imports System.IO
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        File.Copy("C:\Users\Phil Madda & Ale\Desktop\Neues Textdokument1", "C:\Users\Phil Madda & Ale\Desktop\Admin")
        MsgBox("Die ausgewählte Datei wurde erfolgreich kopiert!", MsgBoxStyle.Information, "Erfolgreich kopiert!")
    End Sub
End Class

Habe das mit dem löschen erstmal weggelassen. Aber ich bekomme irgendwie trotzdem die gleiche Medlung. :(
 
1. Fehlt immer noch die Dateiendung ...
2. Wird die Datei nur im selben Ordner kopiert und die Datei würde dann "Admin" heißen
3. Belügst du das Programm weiterhin.
4. Existiert überhaupt ein Ordner, namens "Admin"?
5. Anstatt ein Programm zu schreiben, hätte man auch eben schnell eine batch schreiben können
 
Whiz-zarD schrieb:
1. Fehlt immer noch die Dateiendung ...
2. Wird die Datei nur im selben Ordner kopiert und die Datei würde dann "Admin" heißen
4. Existiert überhaupt ein Ordner, namens "Admin"?
5. Anstatt ein Programm zu schreiben, hätte man auch eben schnell eine batch schreiben können

1. Ok ich denke das ist\war mein Fehler. Danke!
2. Also muss ich danach dann noch "...\Admin\TestFile.txt" machen damit die TestFile heißt?
4. Ja na klaro, sonst hätte das doch überhaupt keinen Sinn. :D
5. Damit kenne ich mich nicht aus, sorry.

Vielen Dank !!

Edit: Funktioniert alles !!! Danke an alle Antworten und Hilfen !!!
 
Zurück
Oben