c# - 如何在 C# 中下载多个 FTP 文件
问题描述
所以我试图做的是将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 服务器传输到本地目录的可能重复项?
总结一下:c# 和 .net 框架(或任何其他框架)改变了 FTP 服务器和通信协议的底层性质。在 FTP 中,您没有“获取 DIR X 下的所有内容”的命令,而是必须列出目录的内容,并且根据您的要求,您必须请求特定的文件。
您可以遍历目录的内容并分别列出每个文件,如果您正在寻找更高级的行为,例如并发等,那么您可以使用框架特定的功能(异步编程和多线程等)来实现这一点。
推荐阅读
- reactjs - 反应 js 引导树视图 href
- java - Java 提供 Observable 不是一个好习惯
- javascript - 无法添加属性“X”,对象不可扩展角度 9
- azure - Azure Functions:没有这样的文件或目录
- python - 在更新列的值时,我在 sqlite3 中遇到“没有这样的列”错误
- java - 在 selenium java 中动态将数据写入 excel
- python - 内部服务器错误:Django、uWsgi、Nginx、Pyenv
- java - Java OutputStreamWriter 和 ByteArrayOutputStream
- windows - 批处理文件从 CSV 读取文件名并重命名文件夹中的文件
- excel - 如果在列表中找到前缀,如何查找?