Count/list 在 C# 中使用 FtpWebRequest 的 FTP 目录中的所有文件
Count/list all files that are in FTP directory with FtpWebRequest in C#
我正在尝试进行 C# 编程,但出于某种原因,我一直坚持尝试对上传到我的 ftp 服务器上的所有文件进行计数。我已经尝试了一些来自 Whosebug
的代码
代码:
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();
他确实连接到了服务器,但只在他能找到的一个文件中向我展示了那里。
在这里您可以看到字符串形式的列表:
这是他找到的文件:
上传到我的服务器的所有文件:
这是我的列表(我不明白为什么有这么多索引):
你的代码对我有用,但@Ozug 可能是正确的,因为你的服务器无法使用 CRLF 行结尾。
更健壮(也更高效)的实现是:
List<string> names = new List<string>();
while (!reader.EndOfStream)
{
names.Add(reader.ReadLine());
}
它甚至应该处理 CR 行结尾。
另见 C# class to parse WebRequestMethods.Ftp.ListDirectoryDetails FTP response。
我正在尝试进行 C# 编程,但出于某种原因,我一直坚持尝试对上传到我的 ftp 服务器上的所有文件进行计数。我已经尝试了一些来自 Whosebug
的代码代码:
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();
他确实连接到了服务器,但只在他能找到的一个文件中向我展示了那里。
在这里您可以看到字符串形式的列表:
这是他找到的文件:
上传到我的服务器的所有文件:
这是我的列表(我不明白为什么有这么多索引):
你的代码对我有用,但@Ozug 可能是正确的,因为你的服务器无法使用 CRLF 行结尾。
更健壮(也更高效)的实现是:
List<string> names = new List<string>();
while (!reader.EndOfStream)
{
names.Add(reader.ReadLine());
}
它甚至应该处理 CR 行结尾。
另见 C# class to parse WebRequestMethods.Ftp.ListDirectoryDetails FTP response。