it-swarm.com.ru

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

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

if exist "C:\test.txt"

delete "C:\test.txt"

else 

return nothing (ignore)
192
Tom

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

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

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

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

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

но

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

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

31
Vercas

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

using System.IO;

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

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

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

string file = @"C:\subfolder\test.txt";
if (Directory.Exists(Path.GetDirectoryName(file)))
{
    File.Delete(file);
}
20
Derek W
  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;
        }
    }
15
Ahmed Ghazey
if (File.Exists(path))
{
    File.Delete(path);
}
9
ecMode

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

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

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

1
Hameed Syed

Если вы читаете из этого файла, используя 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");
1
ag93