Das .NET Framework, die Version 4 steht vor der Tür, ist schnell erwachsen geworden und bietet dank der Spracherweiterung LINQ mächtige Funktionen zur Abfrage und Manipulation von Datenstrukturen unter Verwendung von Fluent Interfaces und Lambda-Ausdrücken. Möchte man aber Dateien programmatisch in den Papierkorb legen anstatt sie zu löschen, dann lässt einen das .NET Framework (zumindest als C#-Entwickler) alleine…
Erinnert man sich an alte Zeiten zurück, dann fällt einem aber vielleicht noch die SHFileOperation ein, die Bestandteil der shell32.dll ist und auf die mittels “P/Invoke” zugegriffen werden kann. Die Methode erwartet eine SHFILEOPSTRUCT, über die man die Dateioperation (in diesem Fall FO_DELETE), den Dateinamen der zu löschenden Datei und zusätzliche Parameter festlegen kann. Die Parameter der Funktion FO_DELETE bestimmen, ob die Datei direkt gelöscht wird (Standardverhalten des .NET Frameworks) oder ob die Löschoperation umkehrbar ist – die Datei also im Papierkorb landet:
[DllImport("shell32.dll", CharSet=CharSet.Auto)]
static extern int SHFileOperation(ref SHFILEOPSTRUCT handle);
Nutzt man VisualBasic oder fügt die Assembly Microsoft.VisualBasic dem Projekt als Referenz hinzu, kann man auch die DeleteFile-Methode der Klasse Microsoft.VisualBasic.FileIO.FileSystem verwenden. Durch Angabe der Option RecycleOption.SendToRecycleBin wird das zu löschende Objekt in den Papierkorb gelegt:
using Microsoft.VisualBasic.FileIO; ... FileSystem.DeleteFile(UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin); ...
Tags: C#, Dateisystem, filesystem, framework, IO, NET, Papierkorb, Recycler, Trashcan