net info example delete clase c# .net file

info - system io c#



¿Cómo elimino un archivo de solo lectura? (5)

Tengo un directorio de basura donde arrojo descargas, proyectos puntuales, borradores de correo electrónico y otras varias cosas que pueden ser útiles por unos días pero que no necesitan ser guardadas para siempre. Para evitar que este directorio se apodere de mi máquina, escribí un programa que eliminará todos los archivos anteriores a un número específico de días y registrará algunas estadísticas sobre la cantidad de archivos eliminados y su tamaño solo por diversión.

Noté que algunas carpetas de proyectos estaban viviendo mucho más de lo que deberían, así que comencé a investigar. En particular, parecía que las carpetas para proyectos en las que había usado SVN se quedaban. Resulta que los archivos de solo lectura en los directorios .svn no se eliminan. Acabo de hacer una prueba simple en un archivo de solo lectura y descubrí que System.IO.File.Delete y System.IO.FileInfo.Delete no eliminarán un archivo de solo lectura.

No me importa proteger los archivos en este directorio en particular; si algo importante está ahí, está en el lugar equivocado. ¿Existe una clase .NET que pueda eliminar archivos de solo lectura, o voy a tener que verificar los atributos de solo lectura y quitarlos?


¿Por qué necesitas verificar? Simplemente borre a la fuerza el indicador de solo lectura y elimine el archivo.


Agregar un código de muestra a la respuesta de Tim:

using System.IO; File.SetAttributes(filePath, FileAttributes.Normal); File.Delete(filePath);



El equivalente si trabaja con un objeto FileInfo es:

file.IsReadOnly = false; file.Delete();


Hm, creo que prefiero poner

>del /F *

en una tarea programada. Tal vez envuelto por un archivo por lotes para estadísticas de registro.

¿Me estoy perdiendo de algo?