FTPClient kutuphanesi ile FTP dosya olaylari(ornek kodlar)

java
  • Turgay Can
  • Tarih

    29 Apr, 2013
  • Yorum

    0
  • Görüntüleme

    1667
  • İndirme

    0

FTPClient kutuphanesi ile FTP dosya olaylari(ornek kodlar)

Merhaba,
Son zamanlarda apache'nin FTPClient kütüphanesi ile çok haşır, neşir oldum. Şuana kadar FTP Server üzerinde istediğim şekilde dosyalar üzerinde yapmam gereken işlemlerin rahatlıkla üstesinden gelmeme yardımcı oldu sağolsun :) Fakat her kütüphane gibi onunda bir eksikliğini hissettim, küçük bir araştırma yaptım. Aslıdna eksiklikten öte daha çok FTPClient kütüphanesi geliştirilirken client-server(istemci-sunucu), server-server(sunucu-farklı bir sunucu) mantığı güdülmüş.

rename metodu mevcut kopyalama işlemleri için fakat kopyalamaktan öte daha çok kesme işlemi yapıyor, böyle oluncada kopyalanan nesne güncel klasöründen taşınmış oluyor. Bu tür işler için daha çok FTP komutlarını çalıştırarak yapmanızı yapmaya itmiş. Bu işler için ise final olarak tanımlanmış FTPCommand sınıfını kullanıyor.

FTP Server içinde belirlenen dosyanın bulunup, bulunmadığını kontrol etmek için ;
FTPClient nesnemizi global tanımlayınız ve ona göre örnek kod implementasyonlarını gerçekleştiriniz.

 InputStream is= client.retrieveFileStream("/test/kp.txt");
    if (is == null) {
       System.out.println("Dosya bulunamadı!");
    }else{
       System.out.println("Dosya mevcut!");
    }

FTP Server içinde bulunan dosyayı silmek için ;

//Dosya mevcutsa, sil
 InputStream is= client.retrieveFileStream("/test/kp.txt");
        if (is == null) {
           System.out.println("Dosya bulunamadı!");
        }else{
          client.deleteFile("/test/kp.txt");
        }

FTP Server içinde bulunana dosyayı klasörleri ile birlikte kopyalama yada adres yolunu değiştirmek için ;

dosyaAdi = "/kp/test/kp.txt";
client.setFileType(FTP.BINARY_FILE_TYPE);//FTP dosyalar için olduğunu belirt!!
client.changeWorkingDirectory(dosyaAdi );
//Bu metod ile eğer aynı isim bir dosya varsa değiştirilen adreste üzerine yazar
client.storeFile(dosyaAdi, is);
//Eğer üzerine yazmasını istemiyorsanız, storeUniqueFileStream metodunu kullanınız
client.storeUniqueFileStream (dosyaAdi,is);

Client - FTP Server (istemci - FTP Sunucu) Upload işlemi için daha önce bir yazı paylaşmıştım. Buradan ulaşabilirsiniz..

Yukarıdaki metodlar FTPClient nesnesine ait fakat biz buna bağımlı değiliz, istersen FTPCommand static sınıfı kullanarakta aynı işlemi yapabiliriz. Aşağıdaki FTPClient sınıfı içindeki retrieveFileStream metodudur ;)

       InputStream input;
        Socket socket;

        if ((socket = _openDataConnection_(FTPCommand.RETR, remote)) == null)
            return null;

        input = socket.getInputStream();
        if (__fileType == ASCII_FILE_TYPE) {
            input = new BufferedInputStream(input,
                    getBufferSize());
            input = new FromNetASCIIInputStream(input);
        }
        return new org.apache.commons.net.io.SocketInputStream(socket, input);

İyi çalışmalar..

0 Yorum..

Yorum yapmak için "Giriş yapın" yada "Misafir üye" olarak yorum yapabilirsiniz.

Yorum Yap