it-swarm.com.de

So löschen Sie eine Datei, nachdem Sie überprüft haben, ob sie vorhanden ist

Wie kann ich eine Datei in C # löschen, z. C:\test.txt, obwohl dieselbe Methode wie in Batch-Dateien angewendet wird, z.

if exist "C:\test.txt"

delete "C:\test.txt"

else 

return nothing (ignore)
198
Tom

Verwenden Sie System.IO.File.Delete wie folgt:

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

Aus der Dokumentation:

Wenn die zu löschende Datei nicht existiert, wird keine Ausnahme ausgelöst.

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

aber

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

wird das gleiche tun, solange der Ordner existiert.

32
Vercas

Sie können den Namespace System.IO Wie folgt importieren:

using System.IO;

Wenn der Dateipfad den vollständigen Pfad zur Datei darstellt, können Sie deren Existenz überprüfen und wie folgt löschen:

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

Wenn Sie ein DirectoryNotFoundException vermeiden möchten, müssen Sie sicherstellen, dass das Verzeichnis der Datei tatsächlich existiert. File.Exists erreicht dies. Eine andere Möglichkeit wäre, die Dienstprogrammklassen Path und Directory wie folgt zu verwenden:

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

Manchmal möchten Sie eine Datei in jedem Fall löschen (in allen Ausnahmefällen müssen Sie die Datei löschen). Für solche Situationen.

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);
            }
        }

Hinweis: Eine Ausnahme wird nicht ausgelöst, wenn die angegebene Datei nicht vorhanden ist.

1
Hameed Syed

Wenn Sie mit FileStream aus dieser Datei lesen und sie anschließend löschen möchten, schließen Sie FileStream, bevor Sie File.Delete (Pfad) aufrufen. Ich hatte dieses Problem.

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