Around and About .NET World

Il blog di Marco Minerva
posts - 1671, comments - 2232, trackbacks - 2135

My Links

News

Contattami su Live Messenger:


MCTS: Windows, Web, Distributed Applications & SQL Server

MCPD: Enterprise Applications

Tag Cloud

Archives

Post Categories

Links

Cancellare ricorsivamente una directory

L'oggetto Directory contenuto nel namespace System.IO espone un metoto, Delete, che con un opportuno parametro consente di cancellare ricorsivamente tutte le directory, i file e le sottodirectory in essa contenute. Tuttavia, nel caso in cui un file abbia l'attributo di sola lettura, l'operazione fallisce. In questo caso è necessario ricorrere ad una cara funzione ricorsiva che, prima della cancellazione di ogni file, ne imposta l'attributo su Archivio:

using System;
using System.IO;

namespace SystemControl
{
    
public static class Cleaner
    {
        
private static void DeleteFiles(DirectoryInfo di, bool DeleteDirectory)
        {
            
foreach (FileInfo f in di.GetFiles())
            {
                
try
                
{
                    
//Imposta l'attributo di archivio per il file prima di eliminarlo.
                    
File.SetAttributes(f.FullName, FileAttributes.Archive);
                    f.Delete();
                }
                
catch 
                
{ }
            }

            
foreach (DirectoryInfo d in di.GetDirectories())
            {
                
//Richiama ricorsivamente la funzione per eliminare tutte le sottodirectory.
                
DeleteFiles(d, true);
            }

            
if (DeleteDirectory)
                di.Delete();
        }

        
public static void Delete(DirectoryInfo di)
        {
            
//Elimina tutti i file contenuti nella directory specificata.
            
DeleteFiles(di, false);
        }
        
        
public static void Delete(Directory path)
        {
            
//Elimina tutti i file contenuti nella directory specificata.
            
DeleteFiles(new DirectoryInfo(path), false);
        }
    }
}

powered by IMHO 1.3

Print | posted on lunedì 17 luglio 2006 23:35 | Filed Under [ C# ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET