在我的應用程序,我需要從FTP服務器下載一些文件..我編碼通過for循環下載一個一個,它工作正常。我的問題是它是非常緩慢的過程因爲爲每個文件提供憑證。所以,如果我可以在FTP服務器壓縮這些文件就可以下載quickly..If有一種方法請指導我.. 這裏我的代碼:如何在FTP服務器目錄中的ZIP文件
塊引用
private void button1_Click(object sender, EventArgs e)
{
string[] list = GetFileList();
DownloadFile(list, "e:\\sample\\");
}
private String[] GetFileList()
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri(_remoteHost));
request.Credentials = new NetworkCredential(_remoteUser, _remotePass);
request.Method = WebRequestMethods.Ftp.ListDirectory;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
string FileNames = reader.ReadToEnd();
string[] Files = Regex.Split(FileNames, "\r\n");
return Files;
}
private void DownloadFile(string[] fileList, string destination)
{
for (int i = 2; i <= fileList.Length - 1; i++)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(_remoteHost + fileList[i]);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(_remoteUser, _remotePass);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
StreamWriter writer = new StreamWriter(destination + fileList[i]);
writer.Write(reader.ReadToEnd());
writer.Close();
reader.Close();
response.Close();
}
}
Blockquote
反正什麼?壓縮文件? – CloudyMarble
如果你想在你下載文件之前壓縮文件,你必須在包含這些文件的服務器上編寫/安裝軟件的軟件。這對你來說可能是一種選擇嗎? – mortb
假設您可以在上傳/下載文件之前將ftp服務器上的文件gzip壓縮,[此代碼片段](http://quantcorner.wordpress.com/2011/11/05/downloading-and-decompressing-on-the-fly -a-gzip-file-from-a-ftp-server-in-c /)可能很有用。 – PHeiberg