Odpowiedzi:
Jest to dość proste przy użyciu klasy File .
if(File.Exists(@"C:\test.txt"))
{
File.Delete(@"C:\test.txt");
}
File.Exists
sprawdzać, ponieważ File.Delete
nie zgłasza wyjątku, jeśli plik nie istnieje, chociaż jeśli używasz ścieżek bezwzględnych, musisz sprawdzić, czy cała ścieżka do pliku jest poprawna.
@
przed ścieżką do pliku? Dla mnie to działa bez.
Użyj System.IO.File.Delete w następujący sposób:
System.IO.File.Delete(@"C:\test.txt")
Z dokumentacji:
Jeśli plik do usunięcia nie istnieje, wyjątek nie jest zgłaszany.
An exception is thrown if the specified file does not exist
.
System.IO.File.Delete(@"C:\test.txt");
wystarczy. Dzięki
Możesz zaimportować System.IO
przestrzeń nazw używając:
using System.IO;
Jeśli ścieżka do pliku reprezentuje pełną ścieżkę do pliku, możesz sprawdzić jego istnienie i usunąć go w następujący sposób:
if(File.Exists(filepath))
{
try
{
File.Delete(filepath);
}
catch(Exception ex)
{
//Do something
}
}
Jeśli chcesz tego uniknąć DirectoryNotFoundException
, musisz upewnić się, że katalog pliku rzeczywiście istnieje. File.Exists
osiąga to. Innym sposobem byłoby wykorzystanie klas użyteczności Path
i Directory
takich jak:
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;
}
}
Jeśli czytasz z tego pliku za pomocą FileStream, a następnie chcesz go usunąć, pamiętaj, aby zamknąć FileStream przed wywołaniem File.Delete (ścieżka). Miałem ten 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
instrukcji, w której File.Delete()
wychodziłby poza nawiasy. W tym przykładzie powinieneś również zrobić filestream.Dispose();
.
Czasami chcesz usunąć plik niezależnie od przypadku (bez względu na wyjątek, usuń plik). W takich sytuacjach.
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);
}
}
Uwaga: wyjątek nie jest zgłaszany, jeśli określony plik nie istnieje.
To będzie najprostszy sposób,
if (System.IO.File.Exists(filePath))
{
System.IO.File.Delete(filePath);
System.Threading.Thread.Sleep(20);
}
Thread.sleep
pomoże doskonale działać, w przeciwnym razie wpłynie to na następny krok, jeśli wykonamy kopiowanie lub zapisywanie pliku.
Innym sposobem, w jaki to zrobiłem, jest
if (System.IO.File.Exists(filePath))
{
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
System.IO.File.Delete(filePath);
}