2017-01-04 3 views
-2

Есть ли способ подсчитать количество файлов, присутствующих в каталоге FTP, используя C# CODE. У меня нет доступа к использованию SSIS, и поэтому я должен выполнить эту задачу с помощью Visual Studio.подсчитать количество файлов в FTP-каталоге Использование C#

+0

Вам нужно все файлы, присутствующие в каталоге? Обратите внимание: http://stackoverflow.com/questions/14877237/getting-all-file-names-from-a-folder-using-c-sharp –

+0

Я не хочу, чтобы имя файла ... Мне просто нужно количество файлов , – rahul

+1

Текст «C# ftp count files», подключенный к google, дает полный учебник в качестве первого результата. Пожалуйста, сделайте исследование, прежде чем публиковать такие вопросы. Да, конечно, можно подсчитать количество файлов в FTP. Провести исследования. – Rob

ответ

2

Используйте следующий код,

public static String[] FTPListTree(String FtpUri, String User, String Pass) { 

List<String> files = new List<String>(); 
Queue<String> folders = new Queue<String>(); 
folders.Enqueue(FtpUri); 

while (folders.Count > 0) { 
    String fld = folders.Dequeue(); 
    List<String> newFiles = new List<String>(); 

    FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(fld); 
    ftp.Credentials = new NetworkCredential(User, Pass); 
    ftp.UsePassive = false; 
    ftp.Method = WebRequestMethods.Ftp.ListDirectory; 
    using (StreamReader resp = new StreamReader(ftp.GetResponse().GetResponseStream())) { 
     String line = resp.ReadLine(); 
     while (line != null) { 
      newFiles.Add(line.Trim()); 
      line = resp.ReadLine(); 
     } 
    } 

    ftp = (FtpWebRequest)FtpWebRequest.Create(fld); 
    ftp.Credentials = new NetworkCredential(User, Pass); 
    ftp.UsePassive = false; 
    ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails; 
    using (StreamReader resp = new StreamReader(ftp.GetResponse().GetResponseStream())) { 
     String line = resp.ReadLine(); 
     while (line != null) { 
      if (line.Trim().ToLower().StartsWith("d") || line.Contains(" <DIR> ")) { 
       String dir = newFiles.First(x => line.EndsWith(x)); 
       newFiles.Remove(dir); 
       folders.Enqueue(fld + dir + "/"); 
      } 
      line = resp.ReadLine(); 
     } 
    } 
    files.AddRange(from f in newFiles select fld + f); 
} 
return files.ToArray(); 
} 

Вы также можете использовать код followning:

List<string> strList = new List<string>(); 

    FtpWebRequest fwr = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP)); 
    fwr.Credentials = new NetworkCredential(ftpUserID, ftpPassword); 
    fwr.Method = WebRequestMethods.Ftp.ListDirectory; 

    //Can object of type StreamReader as given below 
    StreamReader sr = new StreamReader(fwr.GetResponse().GetResponseStream()); 
    string str = sr.ReadLine(); 
     while (str != null) 
     { 
      strList.Add(str); 
      str = sr.ReadLine(); 
     } 
     Console.WriteLine(strList.Count); 
+0

в первый код .. где мне нужно написать FTP IP. ?? – rahul

+0

Вы можете вызвать этот метод с помощью ip, username и password. Передайте эти 3 параметра функции –

+0

, получив ошибку, поскольку ftpUserID не существует. – rahul

Смежные вопросы