FtpWebRequest ListDirectory方法在到达结束之前停止

时间:2017-09-06 14:12:03

标签: .net vb.net ftp stream ftpwebrequest

我正在使用以下代码列出FTP服务器上目录中的文件。但是,服务器上有2,914个文件,但在阅读了大约300个文件后,以下代码停止。有时会抛出以下错误:

  

远程服务器返回错误:(450)文件不可用(例如,文件繁忙)。

但是大多数情况下它不会抛出错误,它就会像完全读完一样停止。

这是我正在使用的代码。

Dim request As FtpWebRequest = DirectCast(WebRequest.Create(new_path), FtpWebRequest)
request.UseBinary = True
request.EnableSsl = True
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails 
request.Credentials = New NetworkCredential("name", "password")
Dim response As FtpWebResponse = DirectCast(request.GetResponse(), FtpWebResponse)
Dim responseStream As Stream = response.GetResponseStream
Dim number_of_files As Integer = 0

dirlist.Clear()
Try
   Using reader As New StreamReader(responseStream)
     Do While reader.Peek <> -1
        Dim filename = reader.ReadLine
        dirlist.Add(filename)
        number_of_files += 1
     Loop
   End Using
Catch ex As Exception
  add_to_log(log_window, "Error : " + ex.ToString)
End Try
response.Close()

add_to_log(log_window, "Files Found : " + number_of_files.ToString)

我不明白为什么它会在到达列表末尾之前停止。

1 个答案:

答案 0 :(得分:0)

这基本上是VB.NET的变种 FtpWebRequest ListDirectory does not return all files

GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_3.4.14 GLIBCXX_3.4.15 GLIBCXX_3.4.16 GLIBCXX_3.4.17 GLIBCXX_3.4.18 GLIBCXX_3.4.19 GLIBCXX_3.4.20 条件错误。只要暂时没有数据可供阅读,它就会打破你的循环。

使用此代码:

Peek