FileCopy Problem: Datei wird nicht kopiert

  • VB.NET

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

    FileCopy Problem: Datei wird nicht kopiert

    Hallo liebe VB-Gemeinde,
    ich wollte ein Programm schreiben bei dem eine DAtei aus Resources in einen ausgewählten Ordner kopiert wird.

    Code zur Ordnerauswahl:

    VB.NET-Quellcode

    1. OpenFileDialog1.Filter = "Alle Dateien (*.*)|*.*"
    2. OpenFileDialog1.FilterIndex = 1
    3. OpenFileDialog1.InitialDirectory = "C:\"
    4. OpenFileDialog1.Title = "Bitte Spieleverzeichnis auswählen"
    5. If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
    6. TextBox1.Text = IO.Path.GetDirectoryName(OpenFileDialog1.FileName) &
    7. "\" &
    8. IO.Path.GetFileName(OpenFileDialog1.FileName)
    9. End If


    Das funktioniert soweit auch, wenn ich dann aber den Button mit dem Code

    VB.NET-Quellcode

    1. IO.File.Copy(My.Resources.test, TextBox1.Text, True)

    drücke, passiert nichts.

    ICh hab keine Ahnung woran es liegen könnte, weil auch keine Fehlermeldung kommt.
    Bin noch totaler Anfänger :whistling:

    Mfg Sleepy
    My.Resources.test ist ja keine Datei im Sinne des Betriebssystems, sondern Teil eines Programms.
    Du musst My.Resources.test in einen String laden und diesen (als String) unter dem richtigen Namen (Deine.exe) abspeichern.
    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!
    1. OpenFileDialog <> FolderBrowserDialog
    --> Benutze FolderBrowserDialog

    2. Kannst du die Ressourcen nicht ohne weiteres aus dem "Memory" holen.
    --> du musst mit Tricks daran gehen.

    Beispiel

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. Dim file As String = "Test.png"
    5. Dim memorystream As New MemoryStream
    6. Dim binarywriter As New BinaryWriter(memorystream)
    7. binarywriter.Write(Image2ByteArray(My.Resources.AutomatedCopy, Drawing.Imaging.ImageFormat.Bmp))
    8. binarywriter.Flush()
    9. binarywriter.Close()
    10. Dim fs As New FileStream(file, FileMode.OpenOrCreate)
    11. fs.Write(memorystream.ToArray(), 0, memorystream.ToArray().Length)
    12. fs.Flush()
    13. fs.Close()
    14. fs.Dispose()
    15. memorystream.Close()
    16. memorystream.Dispose()
    17. End Sub
    18. Public Function Image2ByteArray(ByVal Bild As Image, ByVal Bildformat As System.Drawing.Imaging.ImageFormat) As Byte()
    19. Dim MS As New IO.MemoryStream
    20. Bild.Save(MS, Bildformat)
    21. MS.Flush()
    22. Return MS.ToArray
    23. End Function
    24. End Class

    Funktioniert NUR wenn die Resource ein Bild ist.
    Ich muss mal gucken, wie man das mit allen Formaten machen kann.