Использование FTP для загрузки каждого файла * WHILE * получение списка файлов

Нам нужно получить около 100 очень маленьких файлов с удаленного FTP-сервера с помощью vb .сеть. Наша компания не позволяет нам покупать (или устанавливать) какие-либо сторонние ftp-библиотеки ... поэтому мы вынуждены использовать что-то вроде FtpWebRequest. (Или есть лучший бесплатный вариант, который уже входит в состав Visual Studio?)

Этот метод работает, но ОЧЕНЬ медленный. (Я полагаю, из-за постоянного входа / выхода.)

Log in with user name and password.
Get a file-list from the remote server.
Log out
Use that file-list to get each file separtely:
Log in, get the file, log out.
Log in 99 more times, get each file, log out each time.

Вместо этого нам, вероятно, следует делать это, но это никогда не работает:

Log in with user name and password.  ONCE.
Get a list of filenames.
Download each file.
Log out ONCE.

Мы нашли БЕСЧИСЛЕННОЕ количество примеров в Интернете «получения списка файлов FTP» и позже, «как чтобы загрузить 1 файл с FTP "... но мы никогда не видим" получить КАЖДОЕ имя файла и загрузить его СЕЙЧАС ".

Dim fwr As Net.FtpWebRequest = Net.FtpWebRequest.Create(ftpSite)
fwr.Credentials = New NetworkCredential(userName, password)
fwr.KeepAlive = True
fwr.Method = WebRequestMethods.Ftp.ListDirectory

   Dim sr As IO.StreamReader = Nothing
   Try
      sr = New IO.StreamReader(fwr.GetResponse().GetResponseStream())
      Do Until (sr.EndOfStream())
         fileName = sr.ReadLine()

         fwr.Method = WebRequestMethods.Ftp.DownloadFile

         output = ""
         Dim sr2 As IO.StreamReader = Nothing
         Try
            sr2 = New IO.StreamReader(fwr.GetResponse().GetResponseStream())
            output = sr2.ReadToEnd()

         Catch ex As Exception

         End Try

         If (Not sr2 Is Nothing) Then sr2.Close() : sr2 = Nothing

         Call MsgBox("Got " & fileName & LF & output)
        Loop

   Catch ex As Exception

   End Try

   If (Not sr Is Nothing) Then sr.Close() : sr = Nothing
   If (Not fwr Is Nothing) Then fwr = Nothing
5
задан Bonnie 9 May 2011 в 15:14
поделиться