gpt4 book ai didi

c# - 使用 FTP 和 C# 下载所有文件

转载 作者:行者123 更新时间:2023-11-30 19:34:52 25 4
gpt4 key购买 nike

使用 C# 和 FTP 下载远程目录中的所有文件并将它们保存到本地目录的最佳方法是什么?

谢谢。

最佳答案

下载特定文件夹中的所有文件似乎是一件容易的事。但是,有一些问题必须解决。举几个例子:

  • 如何获取文件列表(System.Net.FtpWebRequest 为您提供未解析的列表,目录列表格式在任何 RFC 中均未标准化)
  • 如果远程目录既有文件又有子目录怎么办。我们必须深入到子目录并下载它的内容吗?
  • 如果本地计算机上已经存在一些远程文件怎么办?他们应该被覆盖吗?跳过?我们应该只覆盖旧文件吗?
  • 如果本地文件不可写怎么办?整个传输应该失败吗?我们应该跳过该文件并继续下一个吗?
  • 如何处理远程磁盘上因我们没有足够的访问权限而无法读取的文件?
  • symlinks怎么样了? , hard linksjunction points处理?链接可以很容易地用于创建 infinite recursive directory tree structure .考虑带有子文件夹 B 的文件夹 A,这实际上不是真正的文件夹,而是指向文件夹 A 的 *nix 硬链接(hard link)。天真的方法将以永不结束的应用程序结束(至少如果没有人设法拔掉插头)。

体面的第三方 FTP 组件应该有处理这些问题的方法。以下代码使用我们的 Rebex FTP for .NET .

using (Ftp client = new Ftp())
{
// connect and login to the FTP site
client.Connect("mirror.aarnet.edu.au");
client.Login("anonymous", "my@password");

// download all files
client.GetFiles(
"/pub/fedora/linux/development/i386/os/EFI/*",
"c:\\temp\\download",
FtpBatchTransferOptions.Recursive,
FtpActionOnExistingFiles.OverwriteAll
);

client.Disconnect();
}

代码取 self 的blogpost可在 blog.rebex.net 获得。该博文还引用了一个示例,该示例显示了如何询问用户如何处理每个问题(例如覆盖/覆盖旧的/跳过/跳过所有)。

关于c# - 使用 FTP 和 C# 下载所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/913312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com