Comment fermer un fichier qui est déjà ouvert dans un répertoire

Je suis en train d'analyser un dossier et supprimer tous les fichiers qu'il contient.

DirectoryInfo dir = new DirectoryInfo("C\\Temp");
if (dir.GetDirectories().Any(p => p.Name == "\\NewTemp"))
{
    foreach (string file in Directory.GetFiles(dir + "\\NewTemp"))
    {
        File.SetAttributes(file, FileAttributes.Normal);
        File.Delete(file);
    }
}

Ce code fonctionne très bien et supprime tous les fichiers dans mon \NewTemp Dossier. Mais si l'un des fichiers est ouvert ces fichiers ne seront pas supprimés. Je veux forecfully fermer les fichiers ouverts et les supprimer. J'ai même essayé de

foreach (string file in Directory.GetFiles(dir + "\\NewTemp"))
{
    TextReader tr = new StreamReader(dir+"\\NewTemp\\"+file);
    tr.Close();
    File.SetAttributes(file, FileAttributes.Normal);
    File.Delete(file);
}

Mais pas d'utilisation. S'il vous plaît laissez-moi savoir où je suis absent.

qu'est-ce que tr doin il
Je suis assez sûr il y a aussi cet utilitaire de ligne de commande que vous pouvez utiliser pour obtenir tous les processus qui ont un fichier ouvert, et je suis aussi assez sûr que vous pouvez taskkill ces processus à partir de c#
tr essaie de fermer le fichier TextReader tr = new StreamReader(fichier). J'ai fait une faute de frappe
stackoverflow.com/questions/177146/... Il n'est pas trop simple avec le code managé. Dans cette réponse, il y a un lien vers un proget sur Codeproject qui peuvent vous aider.

OriginalL'auteur Sneha S Murthy | 2012-10-04