FTP Part I - Dosya Listesi

by Volem October 25, 2011 09:56

 

Merhabalar,

Bugun yeniden 3 asamali bir yazi yazmaya karar verdim. Beraber FTP islemlerini C# ile nasil gerceklestirebilecegimizi gorecegiz. 

Ilk bolumde verilen bir FTP klasorundeki dosya listesini nasil aliriz ona bakacagiz. Ardindan da Download, Upload ve Delete islemlerini nasil yapacagimizi gostermeye calisacagim.


Methodlarin bireysel olarak calisabilmesi icin hepsine FTP server adi, kullanici adi ve sifre bilgilerini parametre olarak gonderiyorum. Ancak siz dilerseniz bu yapiyi bu metodlari gercekleyen sinifin ozellikleri olarak tanimlayabilirsiniz. Boylece sadece o metodu ilgilendiren parametreler ona gidecektir vs.. vs.. :)

Bu bolumde anlatacagim bir klasordeki dosya listesini okuma aslinda diger metodlar ve kullanimlar icin temel olusturacaktir. Sozu fazla uzatmadan kod yazmaya basliyalim..

public static string[] GetFileList(string sourceFolder, string host, string user, string password) {
    StringBuilder result = new StringBuilder();
    WebResponse response = null;
    StreamReader reader = null;
    try
    {
        FtpWebRequest reqFTP;
        reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + host + "/" + sourceFolder + "/"));
        reqFTP.UseBinary = true;
        reqFTP.Credentials = new NetworkCredential(user, password);
        reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
        reqFTP.Proxy = null;
        reqFTP.KeepAlive = false;
        reqFTP.UsePassive = false;
        response = reqFTP.GetResponse();
        reader = new StreamReader(response.GetResponseStream());
        string line = reader.ReadLine();
        while (line != null)
        {
            result.Append(line);
            result.Append("\n");
            line = reader.ReadLine();
        }
        if (result.ToString() != String.Empty)
        {
            result.Remove(result.ToString().LastIndexOf('\n'), 1);
            return result.ToString().Split('\n');
        }
        return new string[0];
    }
    catch (Exception ex)
    {
        if (reader != null)
        {
            reader.Close();
        }
        if (response != null)
        {
            response.Close();
        }
        throw ex;
    }
}

Aslinda yukaridaki kod kendini anlatiyor ancak dikkat edilmesi gereken satir;

reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;

Bu kod parcacigi aslinda ftp sunucusuna gosterdigimiz klasorde en temel command'i olan "dir" calistirmasini soyluyor. Bu komut bize satir satir o klasorde var olan ne varsa listeleyecektir biz de bu satirlari okuyoruz hepsi bu. Bu metodun eksigi aslinda bu klasordekilerin dosya mi yoksa klasor mu olup olmadigini kontrol etmemesidir. Bu konuyu merak eden arkadaslar icin ListDirectory yerine ListDirectoryDetails kullanimini arastirmalarini tavsiye ederim. Kodu basit tutmak amaciyla bu konuya girmiyorum.

Umarim isinize yarar.. Yazimin 2. bolumuyle tekrar gorusmek uzere..

Tags: , , , ,

Yazılım | C#

Comments

Add comment




  Country flag
Click to change captcha
biuquote
  • Comment
  • Preview
Loading



Powered by BlogEngine.NET 1.6.0.0
Theme by Mads Kristensen | Modified by Volem

RSS
View Volkan Nazmi Metin's profile on LinkedIn

RevolverMap

Son Eklenen Yazılar

Yazar Hakkında

Sosyal, evli, çocuklu, karısını ve kızını çok seven, gezmeyi seven, spor yapmak isteyen bir mühendis