Ответы:
Это довольно просто, используя класс File .
if(File.Exists(@"C:\test.txt"))
{
File.Delete(@"C:\test.txt");
}
File.Exists
проверку, поскольку File.Delete
не выдает исключение, если файл не существует, хотя, если вы используете абсолютные пути, вам понадобится проверка, чтобы убедиться, что весь путь к файлу действителен.
@
путь до файла? Для меня это работает без.
Используйте System.IO.File.Delete следующим образом:
System.IO.File.Delete(@"C:\test.txt")
Из документации:
Если удаляемый файл не существует, исключение не выдается.
An exception is thrown if the specified file does not exist
.
System.IO.File.Delete(@"C:\test.txt");
достаточно. Спасибо
Вы можете импортировать System.IO
пространство имен, используя:
using System.IO;
Если путь к файлу представляет полный путь к файлу, вы можете проверить его существование и удалить его следующим образом:
if(File.Exists(filepath))
{
try
{
File.Delete(filepath);
}
catch(Exception ex)
{
//Do something
}
}
Если вы хотите избежать a, DirectoryNotFoundException
вам нужно убедиться, что каталог файла действительно существует. File.Exists
выполняет это. Другим способом было бы использовать Path
и Directory
вспомогательные классы , как так:
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;
}
}
Если вы читаете из этого файла, используя FileStream, а затем хотите удалить его, убедитесь, что вы закрыли FileStream, прежде чем вызывать File.Delete (путь). У меня была эта проблема.
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
утверждение, где File.Delete()
бы выйти за скобки. В примере, который вы имеете, вы также должны сделать filestream.Dispose();
.
Иногда вы хотите удалить файл в любом случае (независимо от исключения, пожалуйста, удалите файл). Для таких ситуаций.
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);
}
}
Примечание. Исключение не выдается, если указанный файл не существует.
Это будет самый простой способ,
if (System.IO.File.Exists(filePath))
{
System.IO.File.Delete(filePath);
System.Threading.Thread.Sleep(20);
}
Thread.sleep
поможет отлично работать, иначе это повлияет на следующий шаг, если мы будем копировать или записывать файл.
Я так и сделал,
if (System.IO.File.Exists(filePath))
{
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
System.IO.File.Delete(filePath);
}