Antworten:
Dies ist mit der File- Klasse ziemlich einfach .
if(File.Exists(@"C:\test.txt"))
{
File.Delete(@"C:\test.txt");
}
File.Exists
Prüfung File.Delete
nicht durchführen, da keine Ausnahme ausgelöst wird, wenn die Datei nicht vorhanden ist. Wenn Sie jedoch absolute Pfade verwenden, müssen Sie die Prüfung durchführen, um sicherzustellen, dass die Der gesamte Dateipfad ist gültig.
@
vor dem Dateipfad? Bei mir geht es ohne.
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 vorhanden ist, wird keine Ausnahme ausgelöst.
An exception is thrown if the specified file does not exist
.
System.IO.File.Delete(@"C:\test.txt");
genug. Vielen Dank
Sie können den System.IO
Namespace importieren mit:
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
}
}
Wenn Sie a vermeiden möchten, DirectoryNotFoundException
müssen Sie sicherstellen, dass das Verzeichnis der Datei tatsächlich vorhanden ist. File.Exists
erreicht dies. Eine andere Möglichkeit wäre, die folgenden Path
und Directory
Utility-Klassen zu verwenden:
string file = @"C:\subfolder\test.txt";
if (Directory.Exists(Path.GetDirectoryName(file)))
{
File.Delete(file);
}
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;
}
}
Wenn Sie mit FileStream aus dieser Datei lesen und sie dann löschen möchten, müssen Sie den FileStream schließen, 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");
using
Anweisung, bei der File.Delete()
die außerhalb der Klammern stehen würde. In dem Beispiel, das Sie haben, sollten Sie auch a filestream.Dispose();
.
Manchmal möchten Sie eine Datei in jedem Fall löschen (unabhängig von der Ausnahme löschen Sie die Datei bitte). 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.
Dies wird der einfachste Weg sein,
if (System.IO.File.Exists(filePath))
{
System.IO.File.Delete(filePath);
System.Threading.Thread.Sleep(20);
}
Thread.sleep
wird helfen, perfekt zu funktionieren, andernfalls wird es den nächsten Schritt beeinflussen, wenn wir die Datei kopieren oder schreiben.
Ein anderer Weg, den ich gemacht habe, ist:
if (System.IO.File.Exists(filePath))
{
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
System.IO.File.Delete(filePath);
}