2017-10-01 1 views
-4

J'ai un problème en C# lorsque j'essaie de supprimer le répertoire (C:\Users\Terry\AppData\Local\Temp).Besoin d'aide pour supprimer le répertoire temp de manière universelle

Ceci est mon code actuel:

private void Button1_Click(object sender, EventArgs e) 
{ 
    var dir = new DirectoryInfo("C:\Users\"+ System.Environment.MachineName + "\AppData\Local\Temp"); 
    foreach (var file in Directory.GetFiles(dir.ToString())) 
    { 
     File.Delete(file); 
    } 
} 

Ce code ne fonctionne pas pour moi. Je suis assez nouveau à C# et je ne suis pas familier avec la suppression de répertoires. Quelqu'un peut-il aider? L'utilisation de la méthode File.Delete tente de supprimer un fichier.

+1

C'est tout à fait paresseux. Évidemment, vous n'avez pas lu la documentation, mais vous n'avez même pas lu ce que vous avez écrit. Que pensez-vous que «File.Delete» fait? –

+1

On dirait qu'il devrait y avoir une méthode ou deux dans NET pour obtenir ces noms de dossier pour nous. – Plutonix

+0

'Path.GetTempPath()' vous donnera le chemin exact que vous recherchez. Il vaut également la peine de regarder 'Environment.GetSpecialFolderPath()' pour obtenir d'autres dossiers spéciaux. Mais si vous voulez supprimer le répertoire et tous ses fichiers/sous-dossiers, vous devez appeler 'dir.Delete (true)'. Si vous allez parcourir les fichiers, il vaut mieux utiliser 'di.EnumerateFiles()' car vous avez déjà un 'DirectoryInfo'. Ou au moins utiliser 'di.FullName' au lieu de' ToString() 'car il y a un problème connu avec' ToString() 'appelé sur un objet' DirectoryInfo' obtenu via la propriété 'Parent' où il retourne seulement le nom – pinkfloydx33

Répondre

2

Vous souhaitez que la méthode Directory.Delete supprime un répertoire.

https://msdn.microsoft.com/en-us/library/fxeahc5f(v=vs.110).aspx

En outre, si vous créez des fichiers temporaires ou répertoire, il est préférable d'utiliser la méthode Path.GetTempPath(). Cela fonctionnera dans toutes les versions de Windows et respectera toutes les variables d'environnement définies par l'utilisateur.

https://msdn.microsoft.com/en-us/library/system.io.path.gettemppath(v=vs.110).aspx

-1

Je pense que vous cherchez

string path = Path.Combine(@"C:\Users", Environment.UserName, @"AppData\Local\Temp"); 
Directory.Delete(path, true);