vb.net을 사용하는 원격 FTP 서버에서 약 100 개의 매우 작은 파일을 가져와야합니다. 저희 회사는 제 3 자의 ftp 라이브러리를 사지 (또는 설치) 못하게하므로 FtpWebRequest와 같은 것을 사용해야합니다. (또는 Visual Studio의 일부인 이미 더 나은 무료 옵션이 있습니까?)FTP를 사용하여 각 파일 다운로드 * WHILE * 파일 목록 가져 오기
이 방법은 효과가 있지만 매우 느립니다.
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.
는 대신, 우리는 아마이 일을해야한다. (I 때문에 IN/OUT 일정 로깅의 가정), 그러나 그것은 결코 작동하지 않습니다 :
Log in with user name and password. ONCE. Get a list of filenames. Download each file. Log out ONCE.
우리는 "가져 오는 동안의 온라인 수많은 사례를 발견 FTP 파일 목록 "및 나중에"FTP로 1 개의 파일을 다운로드하는 방법 "... 그러나 우리는"각 파일 이름을 가져 와서 지금 다운로드하십시오. " 난 그냥 함께 넣어
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
그냥 배치 파일을 윈도우 표준 FTP를 사용하고 MGET을 사용하지 왜 폴더의 모든 파일을 원한다면? –
아마 대량 파일 조작도하고있을 것입니다. –