编程语言
首页 > 编程语言> > c#-FtpWebRequest ListDirectory不会返回所有文件

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