使用C#中的FtpWebRequest统计/列出FTP目录中的所有文件

3

我想学习C#编程,但我卡在了尝试计算上传到我的FTP服务器上的所有文件数量的问题上。 我已经尝试使用stackoverflow上的一些代码。

代码:

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(server);
request.Method = WebRequestMethods.Ftp.ListDirectory;

request.Credentials = new NetworkCredential(user, password);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
string names = reader.ReadToEnd();

reader.Close();
response.Close();

return names.Split(
    new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList();

他已经连接到服务器,但只显示了他找到的一个文件。
这里您可以将列表作为字符串查看:
有一个他找到的文件:
我服务器上上传的所有文件:
这是我的列表(我不明白为什么有这么多索引):
1个回答

1
你的代码对我有效,但是@Ozug可能是正确的,你的服务器未能使用CRLF行尾。更健壮(也更高效)的实现方式是:
List<string> names = new List<string>();
while (!reader.EndOfStream)
{
    names.Add(reader.ReadLine());
}

它应该处理甚至是CR行结尾。
另请参阅{{link1:用于解析WebRequestMethods.Ftp.ListDirectoryDetails FTP响应的C#类}}。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接