gpt4 book ai didi

c# - 如何压缩 FTP 服务器目录中的文件

转载 作者:行者123 更新时间:2023-12-04 05:31:59 26 4
gpt4 key购买 nike

在我的应用程序中,我需要从 FTP 服务器下载一些文件..我编码通过 for 循环一个一个下载,它工作正常。我的问题是它的处理速度非常慢,因为它会提供凭据的每个文件。所以如果我可以在 FTP 服务器中压缩这些文件,它可以快速下载..如果有办法请指导我..
这里我的代码:

Blockquote


    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

最佳答案

为什么不使用用户名和密码启动一次 FtpWebRequest,然后在所有文件的 foreach 循环中使用它,而不是每轮创建一个新的?

另一种方法是使用第三方工具(如: http://www.rebex.net/ftp-ssl.net/ ),它可能更快,但您必须对其进行测试,看看这个:https://stackoverflow.com/a/2343689/395659

第 3 种方法可能是让在服务器上运行的作业在一段时间内创建一次 ZIP 文件,然后将其下载为问题中提到的 Zip 文件。

关于c# - 如何压缩 FTP 服务器目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12458015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com