Datei wird nicht geschrieben

  • VB.NET
  • .NET 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RushDen.

    Datei wird nicht geschrieben

    Hi

    Ich habe mich gerade mal in VB reingefitzt bzw. eher reingecopy-pasted :) .

    Mein Problem:
    Ich versuche, eine Ressource auf den Desktop bzw. in den Temp-Ordner zu kopieren und dann auszuführen.
    Mit dem u.g. Code klappt das auch, wenn ich einen Festen Pfad wie "E:" anstatt My.Computer.FileSystem.SpecialDirectories.Desktop verwende.
    Für den Einsatz auf mehreren (fremden) PCs muss ich aber wie gesagt eine Pfadvariable verwenden.
    Diese wird auch korrekt erfasst, und ich kann sie mir ausgeben lassen, die Datei ist aber einfach nicht da, es kommt auch keine Fehlermeldung,
    Kann mir jemand helfen?

    Ich verwende Virtual Studio Community 2013

    Quellcode

    1. Dim fs As New System.IO.FileStream(My.Computer.FileSystem.SpecialDirectories.Desktop & "foo.exe", IO.FileMode.Create, IO.FileAccess.Write)
    2. Dim wr As New System.IO.BinaryWriter(fs)
    3. wr.Write(My.Resources.foo)
    4. wr.Close()
    5. fs.Close()
    6. TextBox1.Text = My.Computer.FileSystem.SpecialDirectories.Desktop
    gestalte den Zeile#1-Bandwurm mal so um, dass du debuggen kannst:

    VB.NET-Quellcode

    1. dim fileFullName = My.Computer.FileSystem.SpecialDirectories.Desktop & "foo.exe"
    2. Dim fs As New System.IO.FileStream(fileFullName, IO.FileMode.Create, IO.FileAccess.Write)
    3. Dim wr As New System.IO.BinaryWriter(fs)
    4. wr.Write(My.Resources.foo)
    5. wr.Close()
    6. fs.Close()
    7. TextBox1.Text = My.Computer.FileSystem.SpecialDirectories.Desktop
    Jetzt setze einen Haltepunkt auf zeile#2, und guck im LokalFenster nach, welcher pfad in fileFullName drinne steht.
    Wenn dir dabei nix auffällt, dann kopier diesen Pfad aus und poste ihn hier.

    Zu Haltepunkt und LokalFenster: VisualStudio richtig nutzen (Google ist nicht deine Mami)
    Vielen Dank für deine Hilfe, ich habe den Fehler gefunden: da ich nur "foo.exe" geschrieben habe, war fileFUllName \User\Desktopfoo.exe anstatt von \User\Desktop\foo.exe

    ein einfaches Ersetzen von "foo.exe" in "\foo.exe" in Zeile 1 brachte den Erfolg, die Datei wurde kopiert und lässt sich Ordnungsgemäß ausführen!

    pycta schrieb:

    die Datei wurde kopiert
    Nimm die Kurzversion:

    VB.NET-Quellcode

    1. Dim fileFullName = My.Computer.FileSystem.SpecialDirectories.Desktop & "\foo.exe"
    2. IO.File.WriteAllBytes(fileFullName, My.Resources.foo)
    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).
    VB-Fragen über PN / Konversation werden ignoriert!