Respostas:
Isso é bastante simples usando a classe File .
if(File.Exists(@"C:\test.txt"))
{
File.Delete(@"C:\test.txt");
}
File.Exists
verificação, pois File.Delete
não gera uma exceção se o arquivo não existir, embora se você estiver usando caminhos absolutos, precisará da verificação para garantir que o arquivo o caminho completo do arquivo é válido.
@
antes do caminho do arquivo? Para mim, funciona sem.
Use System.IO.File.Delete assim:
System.IO.File.Delete(@"C:\test.txt")
A partir da documentação:
Se o arquivo a ser excluído não existir, nenhuma exceção será lançada.
An exception is thrown if the specified file does not exist
.
System.IO.File.Delete(@"C:\test.txt");
. Obrigado
Você pode importar o System.IO
espaço para nome usando:
using System.IO;
Se o caminho do arquivo representar o caminho completo para o arquivo, você poderá verificar sua existência e excluí-lo da seguinte maneira:
if(File.Exists(filepath))
{
try
{
File.Delete(filepath);
}
catch(Exception ex)
{
//Do something
}
}
Se você deseja evitar um DirectoryNotFoundException
, precisará garantir que o diretório do arquivo realmente exista. File.Exists
realiza isso. Outra maneira seria utilizar as classes utilidade Path
e Directory
assim:
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 você estiver lendo esse arquivo usando o FileStream e depois quiser excluí-lo, feche o FileStream antes de chamar o File.Delete (caminho). Eu tive esse 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
declaração, na qual ela File.Delete()
sairia dos colchetes. No exemplo que você tem, você também deve fazer um filestream.Dispose();
.
Às vezes, você deseja excluir um arquivo, seja qual for o caso (seja qual for a exceção, exclua o arquivo). Para tais situações.
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: Uma exceção não será lançada se o arquivo especificado não existir.
Esta será a maneira mais simples,
if (System.IO.File.Exists(filePath))
{
System.IO.File.Delete(filePath);
System.Threading.Thread.Sleep(20);
}
Thread.sleep
ajudará a funcionar perfeitamente; caso contrário, afetará a próxima etapa se estivermos copiando ou gravando o arquivo.
Outra maneira que eu fiz é,
if (System.IO.File.Exists(filePath))
{
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
System.IO.File.Delete(filePath);
}