none
datei im Hintergrund öffnen und durch Button_Click speichern im Wunschverzeichnis RRS feed

  • Frage

  • Hallo,

    ich habe ein Problem und sitze schon seit letzer Woche dran. Vielleicht könnt ihr mir ja behilflich sein.

    ich habe eine rtf-datei unter C:\bla.rtf gespecihert. Dieser soll - wenn der Anwender den Button"speichern unter" drückt.- in einem Wunschverzeichnis des Anwenders gespeichert werden, da sie beim beenden des Programms aus C:\ gelöscht wird.

    Kann mir da jemand behilflich sein?

    danke im Voraus

    Mittwoch, 14. April 2010 09:48

Antworten

  • Hallo,

    um eine Datei zu verschieben, kannst Du File.Move oder zum Kopieren File.Copy verwenden.
    Für die Auswahl eines Verzeichnisses verwende den FolderBrowserDialog .
    Das ganze könnte z. B. so aussehen:

            Dim fileName As String = "C:\TEMP\test.txt"
            Using dialog As New FolderBrowserDialog()
                dialog.RootFolder = Environment.SpecialFolder.Personal
                dialog.ShowNewFolderButton = True
                If dialog.ShowDialog(Me) = DialogResult.OK Then
                    Try
                        ' Verschiebt die Datei direkt
                        ' für Kopieren: System.IO.File.Copy
                        System.IO.File.Move(fileName, _
                            System.IO.Path.Combine(dialog.SelectedPath, System.IO.Path.GetFileName(fileName)))
                    Catch ex As Exception
                        MessageBox.Show(Me, "Das Verschieben der Datei ist fehlgeschlagen.")
                    End Try
                End If
            End Using
    

    Im Beispiel wird eine Fehlermeldung ausgegeben, wenn die Datei nicht verschoben werden kann.
    Was wegen fehlender Rechte, weil sie in Benutzung ist, oder weil eine Datei gleichen Namens
    bereits vorhanden ist passieren kann.
    Du mußt Dir dafür überlegen, ob Du den Anwender eine weitere Auswahl anbietest,
    oder im Falle einer bestehenden Datei diese überschreibst (was man aber nie stillschweigend tun sollte).

    Im übrigen solltest Du keine Dateien im Wurzelverzeichnis (C:\) speichern,
    besser sind solche Dateien im temporären Verzeichnis (Path.GetTempPath() ) aufgehoben.

    Gruß Elmar

    Mittwoch, 14. April 2010 11:33

Alle Antworten

  • Hallo,

    um eine Datei zu verschieben, kannst Du File.Move oder zum Kopieren File.Copy verwenden.
    Für die Auswahl eines Verzeichnisses verwende den FolderBrowserDialog .
    Das ganze könnte z. B. so aussehen:

            Dim fileName As String = "C:\TEMP\test.txt"
            Using dialog As New FolderBrowserDialog()
                dialog.RootFolder = Environment.SpecialFolder.Personal
                dialog.ShowNewFolderButton = True
                If dialog.ShowDialog(Me) = DialogResult.OK Then
                    Try
                        ' Verschiebt die Datei direkt
                        ' für Kopieren: System.IO.File.Copy
                        System.IO.File.Move(fileName, _
                            System.IO.Path.Combine(dialog.SelectedPath, System.IO.Path.GetFileName(fileName)))
                    Catch ex As Exception
                        MessageBox.Show(Me, "Das Verschieben der Datei ist fehlgeschlagen.")
                    End Try
                End If
            End Using
    

    Im Beispiel wird eine Fehlermeldung ausgegeben, wenn die Datei nicht verschoben werden kann.
    Was wegen fehlender Rechte, weil sie in Benutzung ist, oder weil eine Datei gleichen Namens
    bereits vorhanden ist passieren kann.
    Du mußt Dir dafür überlegen, ob Du den Anwender eine weitere Auswahl anbietest,
    oder im Falle einer bestehenden Datei diese überschreibst (was man aber nie stillschweigend tun sollte).

    Im übrigen solltest Du keine Dateien im Wurzelverzeichnis (C:\) speichern,
    besser sind solche Dateien im temporären Verzeichnis (Path.GetTempPath() ) aufgehoben.

    Gruß Elmar

    Mittwoch, 14. April 2010 11:33
  • vielen dank, habs gelöst!
    Freitag, 16. April 2010 07:59