Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net FtpWebRequest ListDirectory方法在到达末尾之前停止_.net_Vb.net_Ftp_Stream_Ftpwebrequest - Fatal编程技术网

.net FtpWebRequest ListDirectory方法在到达末尾之前停止

.net FtpWebRequest ListDirectory方法在到达末尾之前停止,.net,vb.net,ftp,stream,ftpwebrequest,.net,Vb.net,Ftp,Stream,Ftpwebrequest,我正在使用以下代码列出FTP服务器目录中的文件。但是,服务器上有2914个文件,但以下代码在读取了大约300个文件后停止。有时它会抛出以下错误: 远程服务器返回错误:(450)文件不可用(例如,文件忙) 但大多数情况下,它不会抛出错误,它只是停止,就像它完成了所有的读取一样 这是我正在使用的代码 Dim request As FtpWebRequest = DirectCast(WebRequest.Create(new_path), FtpWebRequest) request.UseBina

我正在使用以下代码列出FTP服务器目录中的文件。但是,服务器上有2914个文件,但以下代码在读取了大约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)
Dim请求为FtpWebRequest=DirectCast(WebRequest.Create(新路径),FtpWebRequest)
request.UseBinary=True
request.EnableSsl=True
request.Method=WebRequestMethods.Ftp.ListDirectoryDetails
request.Credentials=新网络凭据(“名称”、“密码”)
Dim响应为FtpWebResponse=DirectCast(request.GetResponse(),FtpWebResponse)
Dim responseStream As Stream=response.GetResponseStream
整数形式的\u文件的Dim编号\u=0
dirlist.Clear()
尝试
将读卡器用作新的StreamReader(responseStream)
边读边做。Peek-1
Dim文件名=reader.ReadLine
dirlist.Add(文件名)
_文件数+=1
环
终端使用
特例
向日志添加日志(日志窗口,“错误:+ex.ToString”)
结束尝试
答复:Close()
添加到日志(日志窗口,“找到的文件:“+number\u of\u Files.ToString”)

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

这基本上是

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

这基本上是的一个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