Forum: D Programlama Dili RSS
Toplu dosya silerken hata oluşuyor
zafer #1
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Toplu dosya silerken hata oluşuyor
Merhaba,

Bir klasöürdeki bir kaç dosyayı silmek istiyorum bunun için aşağıdaki gibi bir kod yazdım.

...
 
foreach (string dosya; dirEntries(adres, SpanMode.breadth))
{
    remove(dosya);
}

Derleme esnasında bir hata yok ancak kod çalıştıktan sonra klasördeki ilk dosyayı siliyor sonra aşğıdaki hatayı veriyor. Sebebi ne olabilir?

object.Exception@std/file.d(3148): Failed to stat file `/media/depo/Projeler/d/test/resim_60x60.jpg'
https://github.com/zafer06 - depo
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4515 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
dirEntries'de hatalar var: dosya erişim hakları, bozuk symbolic link, vs. durumlarda hata atabiliyor. Bunların bazıları mantıklı olsa da, işin kötüsü bu hatalar foreach'in ilerleyişi sırasında atıldığından try-catch ile de yakalanamıyor. Yine de remove()'un etrafına try-catch eklemeyi deneyebilirsin. Ama herhalde bir dirEntries hatası... Şimdilik şunlar var:

  https://issues.dlang.org/buglist.…?quicksearch=direntrie…

Ali
erdem (Moderatör) #3
Üye Tem 2009 tarihinden beri · 959 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ali beyin gösterdiği zincirleme yöntem bende çalıştı.
    ("yerel/")
        .dirEntries(SpanMode.depth)
        .filter!(kütük => kütük.extension == ".html")
        .each!remove;
zafer #4
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Teşekkürler, ben çözüm olarak birinci foreach ile sileceğim dosyaları bir diziye ekledim. Sonra ikinci bir foreach döngüsü ile bu dizi üzerinde ilerleyerek gerekli dosyaları sildim. Ancak Erdem'in kodları çok daha zarif ve güzel görünüyor. Sanırım onları kullanacağım.
https://github.com/zafer06 - depo
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-10-23, 15:25:19 (UTC -07:00)