Risposte:
Questo è abbastanza semplice usando la classe File .
if(File.Exists(@"C:\test.txt"))
{
File.Delete(@"C:\test.txt");
}
File.Exists
controllo poiché File.Delete
non genera un'eccezione se il file non esiste, sebbene se si utilizzano percorsi assoluti sarà necessario il controllo per assicurarsi che il l'intero percorso del file è valido.
@
prima del percorso del file? Per me funziona senza.
Usa System.IO.File.Delete in questo modo:
System.IO.File.Delete(@"C:\test.txt")
Dalla documentazione:
Se il file da eliminare non esiste, non viene generata alcuna eccezione.
An exception is thrown if the specified file does not exist
.
System.IO.File.Delete(@"C:\test.txt");
è abbastanza. Grazie
È possibile importare lo System.IO
spazio dei nomi usando:
using System.IO;
Se il percorso del file rappresenta il percorso completo del file, è possibile verificarne l'esistenza ed eliminarlo come segue:
if(File.Exists(filepath))
{
try
{
File.Delete(filepath);
}
catch(Exception ex)
{
//Do something
}
}
Se vuoi evitare un DirectoryNotFoundException
, dovrai assicurarti che la directory del file esista davvero. File.Exists
compie questo. Un altro modo sarebbe quello di utilizzare le classi utility Path
e in questo Directory
modo:
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;
}
}
Se stai leggendo da quel file usando FileStream e vuoi eliminarlo, assicurati di chiudere FileStream prima di chiamare File.Delete (percorso). Ho avuto questo problema.
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
un'istruzione, dove File.Delete()
andrebbero fuori dalle parentesi. Nell'esempio che hai, dovresti anche fare un filestream.Dispose();
.
A volte vuoi eliminare un file in ogni caso (qualunque sia l'eccezione, per favore cancella il file). Per tali situazioni.
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);
}
}
Nota: non viene generata un'eccezione se il file specificato non esiste.
Questo sarà il modo più semplice,
if (System.IO.File.Exists(filePath))
{
System.IO.File.Delete(filePath);
System.Threading.Thread.Sleep(20);
}
Thread.sleep
aiuterà a funzionare perfettamente, altrimenti influenzerà il passaggio successivo se eseguiamo la copia o la scrittura del file.
Un altro modo in cui ho fatto è
if (System.IO.File.Exists(filePath))
{
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
System.IO.File.Delete(filePath);
}