FtpWebRequest ListDirectory 方法在到达末尾之前停止
FtpWebRequest ListDirectory method stopping before reaching the end
我正在使用以下代码列出我的 FTP 服务器上目录中的文件。但是,服务器上有 2,914 个文件,但以下代码在读取了大约 300 个文件后停止。有时它会抛出以下错误:
The remote server returned an error: (450) File unavailable (e.g., file busy).
但大多数时候它不会抛出错误,它只是像读完所有内容一样停止。
这是我正在使用的代码。
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)
我不明白为什么它在到达列表末尾之前就停止了。
这基本上是 VB.NET 的变体
.
Peek
条件错误。只要暂时没有数据可供读取,它就会中断循环。
使用此代码:
Using reader As New StreamReader(responseStream)
While True
Dim filename As String = reader.ReadLine()
If filename Is Nothing Then
Exit While
Else
dirlist.Add(filename)
number_of_files++
End If
End While
End Using
我正在使用以下代码列出我的 FTP 服务器上目录中的文件。但是,服务器上有 2,914 个文件,但以下代码在读取了大约 300 个文件后停止。有时它会抛出以下错误:
The remote server returned an error: (450) File unavailable (e.g., file busy).
但大多数时候它不会抛出错误,它只是像读完所有内容一样停止。
这是我正在使用的代码。
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)
我不明白为什么它在到达列表末尾之前就停止了。
这基本上是 VB.NET 的变体
Peek
条件错误。只要暂时没有数据可供读取,它就会中断循环。
使用此代码:
Using reader As New StreamReader(responseStream)
While True
Dim filename As String = reader.ReadLine()
If filename Is Nothing Then
Exit While
Else
dirlist.Add(filename)
number_of_files++
End If
End While
End Using