C#でファイルを削除するにはどうすればよいですか。 C:\test.txt
、バッチファイルのように同じ種類の方法を適用します。
if exist "C:\test.txt"
delete "C:\test.txt"
else
return nothing (ignore)
System.IO.File.Delete を次のように使用します。
System.IO.File.Delete(@"C:\test.txt")
ドキュメントから:
削除するファイルが存在しない場合でも、例外はスローされません。
if (System.IO.File.Exists(@"C:\test.txt"))
System.IO.File.Delete(@"C:\test.txt"));
しかし
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
}
}
DirectoryNotFoundException
を避けたい場合は、ファイルのディレクトリが本当に存在することを確認する必要があります。 File.Exists
はこれを実現します。もう1つの方法は、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;
}
}
if (File.Exists(path))
{
File.Delete(path);
}
場合によってはファイルを削除したいことがあります(例外が発生した場合は必ずファイルを削除してください)。そのような状況のために。
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);
}
}
注:指定されたファイルが存在しない場合でも例外はスローされません。
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");