FtpWebRequest ListDirectory 没有 return 所有文件
FtpWebRequest ListDirectory does not return all files
我正在尝试从 FTP 位置检索文件列表,该位置有大约 9000 个文件。
但是下面的代码总是只给出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);
}
我正在尝试从 FTP 位置检索文件列表,该位置有大约 9000 个文件。
但是下面的代码总是只给出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);
}