[C#] Datei in Papierkorb verschieben

Drucken
( 0 Votes ) 
Hauptkategorie: Programmieren Kategorie: C#
Erstellt am 15.01.2014 Zuletzt aktualisiert am 15.01.2014 Geschrieben von Jonny132
Oftmals gibt man Benutzern in Programmen die Möglichkeit Dateien zu löschen. Das Problem ist, dass der Benutzer es gewohnt ist, dass seine Dateien im Papierkorb landen und nicht komplett physisch gelöscht werden. Somit wird dem Benutzer die Möglichkeit geboten eine, aus versehen gelöschte Datei, aus dem Papierkorb wiederherstellen zu können.

Es gibt zwei Möglichkeiten eine Datei in den Papierkorb zu verschieben. Möglichkeit Nummer Eins ist, mittels WinAPI. Mir persönlich, gefallen das deklarieren und die Anprogrammierung der WinAPI garnicht, weshalb ich auch nicht näher darauf eingehe, denn die zweite Möglichkeit ist ein Wrapper dieser WinAPI-Funktion und ist als Standardfunktion im Microsoft.VisualBasic - Namespace vorhanden und kann von dort bequem aufgerufen werden.

Um die zweite Möglichkeit nutzen zu können, müssen wir also zuerst Microsoft.VisualBasic referenzieren, um auf dessen Funktionalitäten zugreiffen zu können.

Verwendet am besten am Anfang eurer Datei ein using um euch Tipparbeit zu ersparen.
using Microsoft.VisualBasic.FileIO;

In einer Funktion können wir noch diverses Errorhandling hinzufügen, falls beim Kopiervorgang etwas schiefgeht.

Funktion MoveFileToRecycleBin:
    private void MoveFileToRecycleBin(string filePath)
    {
      try
      {
        FileSystem.DeleteFile(filePath, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin);
      }
      catch (Exception ex)
      {
        MessageBox.Show("Die Datei '" + filePath + "' konnte nicht in den Papierkorb verschoben werden!");
      }
    }

Wie Ihr seht, könnt Ihr euch mit den Parametern der DeleteFile-Funktion spielen um so das Verhalten des Löschvorgangs zu steuern.

Zu Schluss kann das Ganze folgendermaßen aufgerufen werden.
 
MoveFileToRecycleBin(@"C:\temp\dateizuloeschen.txt");
 
Hinweis: Das @-Zeichen vor dem String besagt, dass die Backslashes 'escaped' werden sollen. Ansonsten müssten jeweils doppelte Backslashes angegeben werden.

    Veröffentlichen Sie ihre Kommentare ...