2017-01-04 3 views
-2

C# CODE를 사용하여 FTP 디렉토리에있는 파일의 수를 계산할 수있는 방법이 있습니까? SSIS를 사용할 수있는 권한이 없으므로 Visual Studio를 사용하여이 작업을 완료해야합니다.C#을 사용하여 FTP 디렉토리의 파일 수를 카운트

+0

를? 이것을 참조하십시오 - http://stackoverflow.com/questions/14877237/getting-all-file-names-from-a-folder-using-c-sharp –

+0

나는 파일 이름을 잃지 않는다. 나는 단지 파일의 수를 필요로한다. . – rahul

+1

Google에 연결된 'C# ftp count files'텍스트는 첫 번째 결과로서 완전한 자습서를 제공합니다. 이와 같은 질문을 게시하기 전에 조사를 수행하십시오. 예. 물론 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를 사용하여 그 메소드를 호출 할 수 있습니다. ftpUserID가 존재하지 않으므로이 세 매개 변수를 함수 –

+0

에 전달하십시오. – rahul

관련 문제