【问题标题】:How to download multiple FTP files in C# [duplicate]如何在 C# 中下载多个 FTP 文件 [重复]
【发布时间】:2020-05-03 18:39:45
【问题描述】:

所以我尝试做的是将FTP服务器上一个目录中的多个文件下载到本地目录中,我已经知道如何只下载一个文件,但我不知道如何下载多个文件.

FtpWebRequest request =
(FtpWebRequest)WebRequest.Create(ip.Text + "/mods/");
                request.Credentials = new NetworkCredential(user.Text, pass.Text);
                request.Method = WebRequestMethods.Ftp.DownloadFile;

                using (Stream ftpStream = request.GetResponse().GetResponseStream())
                using (Stream fileStream = File.Create(directory.Text + @"\mods\"))
                {
                    byte[] buffer = new byte[10240];
                    int read;
                    while ((read = ftpStream.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        fileStream.Write(buffer, 0, read);
                        Console.WriteLine("Downloaded {0} bytes", fileStream.Position);
                    }

每当我只使用/mods/ 目录时,我都会收到一条错误消息,显示为WebClient Exception

每当我使用/mods/example_file.txt 时,它都会成功下载。

所以我的目标是,如何将整个 /mods/ 目录下载到我的计算机上。

我已经搜索了互联网并阅读了多个帖子,但我似乎无法弄清楚这一点。

我也是 C# 的初学者,所以很可能我做错了什么。

【问题讨论】:

    标签: c# ftp


    【解决方案1】:

    How to transfer multiple files from FTP server to local directory using C#? 可能重复

    总结一下:c# 和 .net 框架(或任何其他框架)不会改变 FTP 服务器和通信协议的底层性质。在 FTP 中,您没有“获取 DIR X 下的所有内容”的命令,而是必须列出目录的内容,并根据您的要求请求特定文件。

    您可以遍历目录的内容并分别列出每个文件,如果您正在寻找更高级的行为,例如并发等,那么您可以使用框架特定的功能(异步编程和多线程等)来实现。

    【讨论】:

    • 我看到你链接的帖子并尝试过,但没有成功。唯一的问题是 FTP 上 /mods/ 目录中的文件几乎每天都在变化,所以如果我分别列出每个文件,那么每次 FTP 中的文件更改时我都不必更改它吗?对不起,如果我没有任何意义,我是 C# 和 FTP 的新手,所以我很容易混淆。
    • 您的文件是否大到需要超过一天才能下载?如果是这种情况,那么您在流程中遇到了逻辑问题。例如,您可能希望服务器进程在标有日期的文件夹中生成文件。此外,无法跟踪 FTP 服务器上的更改。您能做的最好的事情就是依赖目标文件的“创建日期”。
    • 你说的“没有成功”是什么意思?然后你写道它确实有效,只是它太慢了。那么您是否成功编写了下载文件夹中所有文件的代码?您是否只下载新文件?
    猜你喜欢
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    相关资源
    最近更新 更多