Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

File.Delete()


Devilmanta

Öne çıkan mesajlar

Şimdi sorum şu aşağıdaki kod bloğunda m_path yolundaki dosyaları tek tek siliyor ancak bazı dosyalar readonly yada kullanılıyor olduğunda hata veriyor. İşte bu adımda o dosyanın kullanımda yada read only olduğunu anlayıp bir soraki dosyadan silmeye devam etsin istiyorum ancak etmiyor bir dosyada hata veriyorsa diğerleri de silinmeden bekliyor. Varmıdır bir yolu?


foreach (string dir in Directory.GetFiles(m_path))
{
File.Delete(dir);
m_progressBar.PerformStep();

}
Link to comment
Sosyal ağlarda paylaş

pekala zaten bu işlemi ben try catch içerisinde yapıyodum tryda üstte yazdığım catch te de şöyle bişey yer alıyodu bu silme işlemine hata verdikten sora devam etmesini durdurcak bişey değil sanırım. Yani bu try catch in silme işlemine devam etmesini sağlayan kod olduğunu sanmıyorum.


catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Link to comment
Sosyal ağlarda paylaş

Şunlar işine yarayabilir: http://bytes.com/topic/c-sharp/answers/270312-c-delete-directory-containing-read-only-files http://www.issociate.de/board/post/294912/What%27s_the_best_way_to_delete_read-only_files?.html http://stackoverflow.com/questions/265896/how-do-i-delete-a-read-only-file
Link to comment
Sosyal ağlarda paylaş

Neden dursun ki, ben de onu anlamadım. try..catch bloğu bi döngünün içinde. Döngünün rastgele bi çevriminde read-only bi dosyaya denk geldi mi Delete metodu exception yaratcak, boş catch bloğu onu yakalayıp hiçbi şey yapmicak, sonraki adımdan yani progressbar'ı ilerletme kısmından devam edicek. Sonra döngünün bi sonraki çevrimine gircek.
Ben mi yanlış kuruyorum kafamda anlamadım ki.
Link to comment
Sosyal ağlarda paylaş

Ben de ufak bi program yazdım test etmek amaçlı, çalışıyo. Olay nası bu kadar uzadı ben onu anlamadım asıl. Read only olanlar silinmeyecekse dediğim yolla, silinecekse Mirage'ın linkini verdiği yolla yapıldı mı bitti.

Read only'leri atlayacaksan:


foreach (string dir in Directory.GetFiles(m_path))
{
try { File.Delete(dir); }
catch { }
m_progressBar.PerformStep();
}



Read only'ler de silinecekse (dosya kullanımdaysa silemeyeceğine göre delete metodunu yine try..catch içine al hatta):


foreach (string dir in Directory.GetFiles(m_path))
{
FileInfo finfo = new FileInfo(dir);
finfo.IsReadOnly = false;
try { File.Delete(dir); }
catch { }
m_progressBar.PerformStep();
}
Link to comment
Sosyal ağlarda paylaş

Catch bloğu boş olarak denedim program hiçbişey yapmıyor ama arka planda aynı tepkiyi veriyor catch i dolu olanla.
Diyelim dosyalarını silmek istediğim klasörde 100 tane dosya var ve 50. dosya başka bir program tarafından kullanılıyor. işte bu dosyaları silmeye başlıyor 50 dosyaya geldiğinde program hata veriyor dosya kullanımda diye ve geri kalanlarıda silmiyor.
50 dosya halen duruyor o klasörde.
Catch doluda olsa boşta olsa silme işlemini durduruyor. Programı sonlandırmıyor sadece silme işlemi duruyor.
Catch doluyken hata verip duruyor boşken hata vermeden duruyor.
Link to comment
Sosyal ağlarda paylaş

Kojiroh said:

Neden dursun ki, ben de onu anlamadım. try..catch bloğu bi döngünün içinde. Döngünün rastgele bi çevriminde read-only bi dosyaya denk geldi mi Delete metodu exception yaratcak, boş catch bloğu onu yakalayıp hiçbi şey yapmicak, sonraki adımdan yani progressbar'ı ilerletme kısmından devam edicek. Sonra döngünün bi sonraki çevrimine gircek.
Ben mi yanlış kuruyorum kafamda anlamadım ki.


File.Delete(dir);

satırını görünce ben Delete metodu klasörü silmeye çalışıyor sandım. Döngü tek tek bütün dosyalar üzerinde dönüyorsa boş catch bloğuyla da çalışır. Benim anlatmak istediğimle aynı kapıya çıkıyor.

Edit: Devilmanta, try/catch'i döngünün içine koyduğuna emin misin? Bence sen dışına koymuşsun, exception çıkınca döngüden çıkıyorsun.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...