13 Nisan 2015 Pazartesi

Dosya Silme İşlemi (Recursive) + Jar Yapma

         S.a. arkadaşlar,
         Bir kaç gündür yazdığımız Spring Mvc konusuna şimdilik ara veriyoruz. Küçük bir proje yapmıştık daha sonra üzerine eklemeler yapabiliriz. Ama bugün dosya silme işlemleri altında bir kaç şey incelemeyi düşünüyoruz, daha sonra bunu Jar olarak kaydedip, windows başlangıcında çalışmasını işleyeceğiz. Yazdığımız küçük kodu da isteyenler için paylaşacağız, fakat bunda çok da gerekli değil vereceğimiz kodlar hemen çalıştırabilir vazieyette olacak. Şimdi artık konumuza geçme vakti geldi. Elimizde bir klasör ve bu klasördeki dosyaları silmeyi istiyoruz. Bunu nasıl yapabilirizin cevabını arayacağız. Kodu verip gerekli yerlerde yorum satırları ile içine kodu anlatmaya çalıştık.



try {
            File mydir = new File("C:\\Users\\m.chanbaz\\Desktop\\malik");
File[] fileListName = mydir.listFiles();
             
                //dosyadaki elemanlar taraniyor
                for (File f : fileListName) {
if (f.isFile()) {
System.out.println("file name :" + f.getName() + " "
                             + f.getAbsolutePath());
}//altındaki klasör var mı? Varsa onun altindakileri de tariyor
                          // ve ekrana yazdırıyoruz.
                        else if(f.isDirectory()){
System.out.println("directory name :" + f.getName() + " "
                            + f.getAbsolutePath());
}
}
             
                for (File f : fileListName) {
                // taranan dosyalari silme vakti
                    if (f.isFile()) {
                            //ilk klasördeki siliyor
f.delete();
}
                    else if(f.isDirectory()){//**
                        //altindaki klasörde olan dosyalari siliyor
                        File mydir2 = new File(f.getAbsolutePath());
                        File[] fileListNameAgain = mydir2.listFiles();
                        for (File fa : fileListNameAgain) {
                             if (fa.isFile()) {
                               System.out.println("file name Again :" + fa.getName() + " "
                                                            +  fa.getAbsolutePath());
                               fa.delete();
                        }
                    }
}
}
        }
        catch (Exception ex) {
            System.out.println(ex);
        }

       Recursive
      Ama burada kodumuzda belki de sizlerin de dikkatini çekmiştir. Klasörümüzün altında bir alt klasör varsa ne olacağının cevabıyla ilgili. Bunla ilgili ** kısmımızı yazdık ve bir alt klasörü de denetleyebilecek. Peki ya onun da altında bir klasör varsa ne olacak onun için de böyle yazıp kodumuzu uzatacak mıyız ? Hayır tabi ki de. Bunun için recursive metodlara başvuracağız. Recursive metodlar nedir peki ? Kısaca açıklayacak olursak en derin klasöre kadar gider ve oradan tek tek yukarı çıkmaya başlar ve çıktıkça klasör ve dosyaları da temizler. Şimdi de Recursive metodu ile silme işlemini yapalım.

    static public void deleteRecursive(File path){
        File[] c = path.listFiles();
        for (File file : c){
            //klasör kontrölü
            if (file.isDirectory()){
                System.out.println(file.isDirectory());
                //eğer klasör mevcutsa yine yukarıdan devam eder
                deleteRecursive(file);
                file.delete();
             
            } else {
                //burada ise her klasörün içindekini siler
                 file.delete();
            }
       // path.delete();
       //yorum satırını kaldırırsak ana dizini de siler
        }
    }
 
      Jar Oluşturma ve Başlangıç'ta Çalıştırma
       Burada da recursive metodumuz mevcuttur. Gerekli açıklamayi yapmaya çalıştık. Şimdi de netbeans uygulaması ile jarımızı oluşturalım.
  - Projemizi sağ tıklıyoruz ve eğer set as Main Project seçili değilse onu seçip ana projemiz haline getirelim.
   - Daha sonra run seçeneğinden clean and build main project diyelim.(shift +11 ile de aynı işlemi yapabiliriz.) Bu jarımızın nereye düşeceği konsol ekranında yazıyor mesela benimkinde "C:\Users\m.chanbaz\Documents\NetBeansProjects\DeleteFile\dist\DeleteFile.jar" sizde farklı olacaktır tabi. Ve artık sona doğru yaklaşıyoruz.
 -  Şimdi de başlangıçta çalıştıralım yaptığımız projeyi.
"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp" dizinine gidip oluşturduğumuz jarı burayı yapıştırıyoruz. Yeniden başlattığımızda .Jar'ımız otomatik olarak çalışacaktır. Bu yazımızı da böylece sonlandırıyoruz. Umarım iyi bir yazı olmuştur. İyi çalışmalar.

Proje Linki


Hiç yorum yok:

Yorum Gönder