2017-01-04 97 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が存在しないため、これらの3つのパラメータを関数 –

+0

に渡します。 – rahul

関連する問題