Yanıtlar:
File sınıfını kullanmak oldukça basittir .
if(File.Exists(@"C:\test.txt"))
{
File.Delete(@"C:\test.txt");
}
File.Exists
kontrolü yapmanız gerekmez File.Delete
, ancak mutlak yollar kullanıyorsanız, emin olmak için kontrole ihtiyacınız olacaktır. tüm dosya yolu geçerlidir.
@
Dosya yolundan önce neden var ? Benim için olmadan çalışır.
System.IO.File.Delete'ı şu şekilde kullanın :
System.IO.File.Delete(@"C:\test.txt")
Belgelerden:
Silinecek dosya mevcut değilse, herhangi bir istisna atılmaz.
An exception is thrown if the specified file does not exist
.
System.IO.File.Delete(@"C:\test.txt");
yeter. Teşekkürler
System.IO
Ad alanını aşağıdakileri kullanarak içe aktarabilirsiniz :
using System.IO;
Dosya yolu dosyanın tam yolunu temsil ediyorsa, varlığını kontrol edebilir ve aşağıdaki gibi silebilirsiniz:
if(File.Exists(filepath))
{
try
{
File.Delete(filepath);
}
catch(Exception ex)
{
//Do something
}
}
Birinden kaçınmak DirectoryNotFoundException
istiyorsanız, dosya dizininin gerçekten var olduğundan emin olmanız gerekir. File.Exists
bunu başarır. Başka bir yol, Path
ve Directory
yardımcı sınıflarını şu şekilde kullanmak olacaktır :
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;
}
}
FileStream kullanarak bu dosyadan okuyup silmek istiyorsanız, File.Delete (yol) öğesini çağırmadan önce FileStream'i kapattığınızdan emin olun. Bu sorunu yaşadım.
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
ifade kullanın File.Delete()
. Sahip olduğunuz örnekte ayrıca bir filestream.Dispose();
.
Bazen ne olursa olsun bir dosyayı silmek istersiniz (istisna ne olursa olsun, lütfen dosyayı silin). Bu gibi durumlar için.
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);
}
}
Not: Belirtilen dosya yoksa bir istisna atılmaz.
Bu en basit yol olacak,
if (System.IO.File.Exists(filePath))
{
System.IO.File.Delete(filePath);
System.Threading.Thread.Sleep(20);
}
Thread.sleep
mükemmel çalışmaya yardımcı olur, aksi takdirde, dosyayı kopyalar veya yazarsak bir sonraki adımı etkiler.
Yaptığım başka bir yol,
if (System.IO.File.Exists(filePath))
{
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
System.IO.File.Delete(filePath);
}