2012-12-17 12 views
7

すべてのファイルをオンラインリストからリストビューにリストする方法はありますか?オンラインFTPディレクトリからリストビューC#

これは、ローカルディレクトリがリストされるためのコードです。FTPウェブサイトに接続してファイルを一覧表示する方法があるかどうかを知りたいですか?

FolderBrowserDialog folderPicker = new FolderBrowserDialog(); 
if (folderPicker.ShowDialog() == DialogResult.OK) 
{ 

    ListView1.Items.Clear(); 

    string[] files = Directory.GetFiles(folderPicker.SelectedPath); 
    foreach (string file in files) 
    { 

     string fileName = Path.GetFileNameWithoutExtension(file); 
     ListViewItem item = new ListViewItem(fileName); 
     item.Tag = file; 

     ListView1.Items.Add(item); 

    } 

} 

私はこのコードを使用しているが、私はそれはそのエラーを考え出すていないが、そのいずれかがWebサーバ上のファイルを一覧表示しませ仕事を得るように見えることはできませんか?

private void ConnectBtn_Click(object sender, EventArgs e) 
    { 
     ListDirectory(); 
    } 

    public string[] ListDirectory() 
    { 
     var list = new List<string>(); 

     var request = createRequest(TxtServer.Text, WebRequestMethods.Ftp.ListDirectory); 

     using (var response = (FtpWebResponse)request.GetResponse()) 
     { 
      using (var stream = response.GetResponseStream()) 
      { 
       using (var reader = new StreamReader(stream, true)) 
       { 
        while (!reader.EndOfStream) 
        { 
         list.Add(reader.ReadLine()); 
        } 
       } 
      } 
     } 

     return list.ToArray(); 
    } 

    private FtpWebRequest createRequest(string uri, string method) 
    { 
     var r = (FtpWebRequest)WebRequest.Create(uri); 

     r.Credentials = new NetworkCredential(TxtUsername.Text, TxtPassword.Text); 
     r.Method = method; 

     return r; 
    } 

答えて

9

あなたはthis wrapper libraryを使用することができます。

関連するコードは次のとおりです。

public string[] ListDirectory() { 
     var list = new List<string>(); 

     var request = createRequest(WebRequestMethods.Ftp.ListDirectory); 

     using (var response = (FtpWebResponse)request.GetResponse()) { 
      using (var stream = response.GetResponseStream()) { 
       using (var reader = new StreamReader(stream, true)) { 
        while (!reader.EndOfStream) { 
         list.Add(reader.ReadLine()); 
        } 
       } 
      } 
     } 

     return list.ToArray(); 
    } 
+0

を見つけることができませんか? – Terrii

+0

createRequest – Terrii

+0

'createRequest'はクラスの一番下にあります。プライベートメソッドの1つで、3番目はプライベートメソッドです。 –

1

私は、私が試して、今そのリストビューでファイルを表示する少しをした答えを見つけていただきありがとうございますロバート・ハーヴェイ♦

private void ConnectBtn_Click(object sender, EventArgs e) 
    { 
     ListDirectory(); 
    } 

    public string[] ListDirectory() 
    { 
     var list = listView1; 

     var request = createRequest(TxtServer.Text, WebRequestMethods.Ftp.ListDirectory); 

     using (var response = (FtpWebResponse)request.GetResponse()) 
     { 
      using (var stream = response.GetResponseStream()) 
      { 
       using (var reader = new StreamReader(stream, true)) 
       { 
        while (!reader.EndOfStream) 
        { 
         list.Items.Add(reader.ReadLine()); 
        } 
       } 
      } 
     } List<string> l = new List<string>(); 
     return l.ToArray(); 
    } 

    private FtpWebRequest createRequest(string uri, string method) 
    { 
     var r = (FtpWebRequest)WebRequest.Create(uri); 

     r.Credentials = new NetworkCredential(TxtUsername.Text, TxtPassword.Text); 
     r.Method = method; 

     return r; 
    } 
1

このコードftpからファイルのリストを取得するために使用することができます

private void ftpFileRead() 
{ 
    FtpWebRequest Request = (FtpWebRequest)WebRequest.Create("your ftpAddress"); 
    Request.Method = WebRequestMethods.Ftp.ListDirectory;  
    Request.Credentials = new NetworkCredential(your ftp username,your ftp password); 
    FtpWebResponse Response = (FtpWebResponse)Request.GetResponse(); 
    Stream ResponseStream = Response.GetResponseStream(); 
    StreamReader Reader = new StreamReader(ResponseStream); 

    ListBox1.Items.Add(Response.WelcomeMessage); 
    while (!Reader.EndOfStream)//Read file name 
    { 
    ListBox1.Items.Add(Reader.ReadLine().ToString()); 
    } 
    Response.Close(); 
    ResponseStream.Close(); 
    Reader.Close(); 
} 
7

ここではすべてのファイルを取得するための素晴らしいヘルパーですFTPディレクトリのフォルダ:ここで見つける

public static IEnumerable<string> GetFilesInFtpDirectory(string url, string username, string password) 
{ 
    // Get the object used to communicate with the server. 
    var request = (FtpWebRequest)WebRequest.Create(url); 
    request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; 
    request.Credentials = new NetworkCredential(username,password); 

    using (var response = (FtpWebResponse) request.GetResponse()) 
    { 
     using (var responseStream = response.GetResponseStream()) 
     { 
      var reader = new StreamReader(responseStream); 
      while (!reader.EndOfStream) 
      { 
       var line = reader.ReadLine(); 
       if (string.IsNullOrWhiteSpace(line) == false) 
       { 
        yield return line.Split(new[] { ' ', '\t' }).Last();  
       } 
      } 
     } 
    } 
} 

http://www.snippetsource.net/Snippet/128/get-all-files-of-an-ftp-directory-in-c

+0

ありがとうChristian :) – Terrii

0

あなたがこの方法を使用することができます。

public static string[] GetFiles(string path, NetworkCredential Credentials, SearchOption searchOption) 
    { 
     var request = (FtpWebRequest)WebRequest.Create(path); 
     request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; 
     request.Credentials = Credentials; 
     List<string> files = new List<string>(); 
     using (var response = (FtpWebResponse)request.GetResponse()) 
     { 
      using (var responseStream = response.GetResponseStream()) 
      { 
       var reader = new System.IO.StreamReader(responseStream); 
       while (!reader.EndOfStream) 
       { 
        var line = reader.ReadLine(); 
        if (string.IsNullOrWhiteSpace(line) == false) 
        { 
         if (!line.Contains("<DIR>")) 
         { 
          string[] details = line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); 
          string file = line.Replace(details[0], "") 
           .Replace(details[1], "") 
           .Replace(details[2], "") 
           .Trim(); 
          files.Add(file); 
         } 
         else 
         { 
          if (searchOption == SearchOption.AllDirectories) 
          { 
           string dirName = line.Split(
             new string[] { "<DIR>" }, 
             StringSplitOptions.RemoveEmptyEntries 
             ).Last().Trim(); 
           string dirFullName = String.Format("{0}/{1}", path.Trim('/'), dirName); 
           files.AddRange(GetFiles(dirFullName, Credentials, searchOption)); 
          } 
         } 
        } 
       } 
      } 
     } 
     return files.ToArray(); 
    } 
、私はそれが私はそれがFTPのユーザ名とパスワードとに接続するように望んでいるサーバーに関する情報を入れてくださいWebRequest.Create()だけに変更
関連する問題