web-dev-qa-db-fra.com

Comment supprimer un fichier après avoir vérifié s'il existe

Comment puis-je supprimer un fichier en C #, par exemple C:\test.txt, bien que vous appliquiez le même type de méthode que dans les fichiers de commandes, par exemple.

if exist "C:\test.txt"

delete "C:\test.txt"

else 

return nothing (ignore)
198
Tom

Utilisez System.IO.File.Delete comme suit:

System.IO.File.Delete(@"C:\test.txt")

De la documentation:

Si le fichier à supprimer n'existe pas, aucune exception n'est levée.

92
Chris Eberle
if (System.IO.File.Exists(@"C:\test.txt"))
    System.IO.File.Delete(@"C:\test.txt"));

mais

System.IO.File.Delete(@"C:\test.txt");

fera de même tant que le dossier existe.

32
Vercas

Vous pouvez importer l'espace de noms System.IO à l'aide de:

using System.IO;

Si le chemin d'accès au fichier représente le chemin d'accès complet au fichier, vous pouvez vérifier son existence et le supprimer comme suit:

if(File.Exists(filepath))
{
     try
    {
         File.Delete(filepath);
    } 
    catch(Exception ex)
    {
      //Do something
    } 
}  
31
Ashin

Si vous voulez éviter un DirectoryNotFoundException, vous devrez vous assurer que le répertoire du fichier existe bien. File.Exists accomplit cela. Une autre solution consisterait à utiliser les classes d’utilité Path et Directory comme suit:

string file = @"C:\subfolder\test.txt";
if (Directory.Exists(Path.GetDirectoryName(file)))
{
    File.Delete(file);
}
21
Derek W
  if (System.IO.File.Exists(@"C:\Users\Public\DeleteTest\test.txt"))
    {
        // Use a try block to catch IOExceptions, to 
        // handle the case of the file already being 
        // opened by another process. 
        try
        {
            System.IO.File.Delete(@"C:\Users\Public\DeleteTest\test.txt");
        }
        catch (System.IO.IOException e)
        {
            Console.WriteLine(e.Message);
            return;
        }
    }
15
Ahmed Ghazey
if (File.Exists(path))
{
    File.Delete(path);
}
11
ecMode

Parfois, vous souhaitez supprimer un fichier quel que soit le cas (quelle que soit l'exception qui se produit, supprimez le fichier). Pour de telles situations.

public static void DeleteFile(string path)
        {
            if (!File.Exists(path))
            {
                return;
            }

            bool isDeleted = false;
            while (!isDeleted)
            {
                try
                {
                    File.Delete(path);
                    isDeleted = true;
                }
                catch (Exception e)
                {
                }
                Thread.Sleep(50);
            }
        }

Remarque: Une exception n'est pas levée si le fichier spécifié n'existe pas.

1
Hameed Syed

Si vous lisez à partir de ce fichier à l'aide de FileStream et que vous voulez ensuite le supprimer, assurez-vous de fermer FileStream avant d'appeler File.Delete (chemin). J'ai eu ce problème.

var filestream = new System.IO.FileStream(@"C:\Test\PutInv.txt", System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite);
filestream.Close();
File.Delete(@"C:\Test\PutInv.txt");
1
ag93