Borrar un archivo y enviarlo la papelera de reciclaje en C#

Cómo borrar un archivo y enviarlo a la papelera de reciclaje utilizando C#


Borrar un archivo y enviarlo  la papelera de reciclaje en C#

Las funciones de C # para borrar archivos y directorio sólo permiten eliminar los datos, no nos permiten enviarlos a la papelera de reciclaje .

Para borrar el archivo enviándolo a la papelera de reciclaje, debemos utilizar las funciones de la API, en concreto el método SHFileOperation .

Para ello, primero definimos las funciones y las constantes que se utilizan en la llamada a la API:

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto, Pack = 1)]
public struct SHFILEOPSTRUCT
{
    public IntPtr hwnd;
    [MarshalAs(UnmanagedType.U4)]
    public int wFunc;
    public string pFrom;
    public string pTo;
    public short fFlags;
    [MarshalAs(UnmanagedType.Bool)]
    public bool fAnyOperationsAborted;
    public IntPtr hNameMappings;
    public string lpszProgressTitle;
}

[DllImport("shell32.dll", CharSet = CharSet.Auto)]
public static extern int SHFileOperation(ref SHFILEOPSTRUCT FileOp);

public const int FO_DELETE = 3;
public const int FOF_ALLOWUNDO = 0x40;
public const int FOF_NOCONFIRMATION = 0x10; // No pregunta al usuario
	

Una vez definidas las funciones y las constantes, se puede borrar el archivo o directorio enviándolo a la papelera de reciclaje de esta forma:

SHFILEOPSTRUCT shf = new Win32.SHFILEOPSTRUCT();

shf.wFunc = Win32.FO_DELETE;
shf.fFlags = Win32.FOF_ALLOWUNDO;
shf.pFrom = @"c:\archivo.txt" + '\0' + '\0';
Win32.SHFileOperation(ref shf);
	

El parámetro pFrom puede ser tanto un archivo como un directorio.

Páginas relacionadas