Как удалить файл после проверки, существует ли он

Как удалить файл в С#, например. C:\test.txt, хотя применяют такой же метод, как в пакетных файлах, например.

if exist "C:\test.txt"

delete "C:\test.txt"

else 

return nothing (ignore)

Ответ 1

Это довольно просто, используя класс File.

if(File.Exists(@"C:\test.txt"))
{
    File.Delete(@"C:\test.txt");
}


Как отметил Chris в комментариях, вам действительно не нужно делать проверку File.Exists, поскольку File.Delete не генерирует исключение, если файл doesn ' t, хотя, если вы используете абсолютные пути, вам понадобится проверка, чтобы убедиться, что весь путь к файлу действителен.

Ответ 2

Используйте System.IO.File.Delete так:

System.IO.File.Delete(@"C:\test.txt")

Из документации:

Если файл, который нужно удалить, не существует, исключение не генерируется.

Ответ 3

if (System.IO.File.Exists(@"C:\test.txt"))
    System.IO.File.Delete(@"C:\test.txt"));

но

System.IO.File.Delete(@"C:\test.txt");

будет делать то же самое, если папка существует.

Ответ 4

Вы можете импортировать пространство имен System.IO используя:

using System.IO;

Если путь к файлу представляет полный путь к файлу, вы можете проверить его существование и удалить его следующим образом:

if(File.Exists(filepath))
{
     try
    {
         File.Delete(filepath);
    } 
    catch(Exception ex)
    {
      //Do something
    } 
}  

Ответ 5

Если вы хотите избежать DirectoryNotFoundException, вам необходимо убедиться, что каталог файла действительно существует. File.Exists выполняет это. Другим способом было бы использовать классы утилиты Path и Directory следующим образом:

string file = @"C:\subfolder\test.txt";
if (Directory.Exists(Path.GetDirectoryName(file)))
{
    File.Delete(file);
}

Ответ 6

  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;
        }
    }

Ответ 7

if (File.Exists(path))
{
    File.Delete(path);
}

Ответ 8

Если вы читаете этот файл с помощью 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");

Ответ 9

Иногда вы хотите удалить файл в любом случае (независимо от того, что произошло, удалите файл). Для таких ситуаций.

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);
            }
        }

Примечание. Исключение не выдается, если указанный файл не существует.

Ответ 10

Это будет самый простой способ,

if (System.IO.File.Exists(filePath)) 
{
  System.IO.File.Delete(filePath);
  System.Threading.Thread.Sleep(20);
}

Thread.sleep поможет отлично работать, иначе это повлияет на следующий шаг, если мы будем копировать или записывать файл.