2010-01-08 19 views
11

Bir dosyayı silmeye çalışıyorum ancak aşağıdaki kod bunu yapmıyor. Bir istisna atar, ancak dosya hala orada. Mümkün mü?File.Delete Dosyayı Silemiyor Not

try 
{ 
    File.Delete(@"C:\File.txt"); 
} 
catch(Exception e) 
{ 
    Console.WriteLine(e); 
} 

Dosya silinemiyorsa, özel durum yazdırılmalı, ancak yazdırılmamalıdır. Bu sessizce başarısız olursa (File.Delete yönteminde olduğu gibi herhangi bir hata yutuyor)?

+1

Dosya yolunun doğru olduğundan kesinlikle emin misiniz? Dosya yoksa bir istisna atılmaz. –

+0

Dosyanın silinmediğini düşünmenizi sağlayan nedir? –

+0

Durumun böyle olup olmadığını doğrulayacağım, ancak yol kesinlikle doğru görünüyor ve dosya var. – kevindaub

cevap

16

File.Delete Belirtilen dosya yoksa bir istisna değil   yapar. [MSDN belgelerinin bazı önceki sürümleri yanlış olduğunu açıkladı].

try 
{ 
    string filename = @"C:\File.txt"; 
    if (File.Exists(filename)) 
    { 
     File.Delete(filename); 
    } 
    else 
    { 
     Debug.WriteLine("File does not exist."); 
    } 
} 
catch(Exception e) 
{ 
    Console.WriteLine(e); 
} 
+4

@Mitch »Bunun doğru olduğunu düşünmüyorum. MSDN'nin ikinci tümceciğinden: Belirtilen dosya yoksa "_An bir istisna atılmadı." http://msdn.microsoft.com/en-us/library/system.io.file.delete.aspx –

+0

İlginç, bunu doğrulamak için silme işleminden önce bir File.Exists yapmam gerekecek. Teşekkürler. – kevindaub

+1

doğru; 3.5 doco doğru. Bazı önceki sürümler değildi. –

2

Dosya adının doğru olduğundan emin misiniz? Bir hata atmadığı tek zaman, dosya mevcut değilse. Aptal soru, ama herhangi bir şansla dosya adında bir yazım hatası var mı? Ya da yoldaki bir hata mı?

3

Dosyanın yolunun doğru olduğunu kontrol edin. Dosya yoksa bir istisna atılmaz. Yaygın bir hata, Windows'da "Bilinen dosya türleri için uzantıları gizle" seçeneği File.txt isimli bir dosya ile File.txt.txt isimli bir dosyayı karıştırmaktır.