c#-FtpWebRequest ListDirectory不会返回所有文件
作者:互联网
我正在尝试从具有约9000个文件的FTP位置检索文件列表.
但是以下代码始终只提供97个文件.在第98个文件的循环开始时,StreamReader.Peek()变为-1
输出“ test.txt”始终仅具有前97个文件,例如,FTP响应本身仅包含97个文件.
感谢任何帮助.
requestList = (FtpWebRequest)WebRequest.Create("xxx");
requestList.Credentials = new NetworkCredential("xx", "xx");
requestList.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
responseList = (FtpWebResponse)requestList.GetResponse();
responseListStream = responseList.GetResponseStream();
listReader = new StreamReader(responseListStream);
using (StreamWriter w = new StreamWriter("test.txt"))
{
while (listReader.Peek() >= 0)
{
w.WriteLine(listReader.ReadLine());
}
w.Close();
}
解决方法:
Peek()条件错误.每当暂时没有可供读取的数据时,它就会中断您的循环.
使用此代码:
string line;
while (!string.IsNullOrEmpty(line = listReader.ReadLine()))
{
w.WriteLine(line);
}
虽然如果您只需要复制流,请使用以下命令:
w.Write(listReader.ReadToEnd());
甚至更好(更有效):
using (Stream fileStream = File.Create("test.txt"))
{
responseListStream.CopyTo(fileStream);
}
标签:ftpwebrequest,ftp,stream,c,net 来源: https://codeday.me/bug/20191111/2019097.html