回答:
これは、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;
filepathがファイルへのフルパスを表す場合は、その存在を確認し、次のように削除できます。
if(File.Exists(filepath))
{
try
{
File.Delete(filepath);
}
catch(Exception ex)
{
//Do something
}
}
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を使用してそのファイルから読み取りを行ってからそれを削除する場合は、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");
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);
}