web-dev-qa-db-ja.com

ファイルが存在するかどうかを確認した後にファイルを削除する方法

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はこれを実現します。もう1つの方法は、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を使用してそのファイルから読み込んでいてそれを削除したい場合は、File.Delete(path)を呼び出す前に必ずFileStreamを閉じてください。私はこの問題を抱えていました。

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