列出从在线FTP目录到列表视图C#的所有文件

Ter*_*rii 7 c# ftp listview

我和其他正在阅读此列表的人如何列出从在线目录到列表视图的所有文件?

这是要列出的本地目录的代码我想知道是否有办法使它连接到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);

    }

}
Run Code Online (Sandbox Code Playgroud)

我已经使用了这段代码,但我似乎无法让它工作它没有出现错误,但它没有列出网络服务器上的文件?

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;
    }
Run Code Online (Sandbox Code Playgroud)

Rob*_*vey 11

您可以使用此包装器库.

相关代码是:

    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();
    }
Run Code Online (Sandbox Code Playgroud)


小智 8

这是获取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();    
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在此处找到:http://www.snippetsource.net/Snippet/128/get-all-files-of-an-ftp-directory-in-c