繁体   English   中英

如何从以前的日期下载FTP文件到当前的日期

[英]How to download FTP Files from Previous date to Current Date

我可以从C#下载ftp文件,但可以下载当前日期文件。 我需要从以前的日期下载文件到当前的日期。 例如,我的文件是:

xys04-02-2011.zip xys04-03-2011.zip xys04-04-2011.zip

我正在控制台应用程序中尝试以下代码:

string defaultLocalFolder_MCX = "C:\\";

FastZip fzMCX = new FastZip();

fzMCX.ExtractZip(
    defaultLocalFolder_MCX + "\\xys03-31-2011.zip", 
    defaultLocalFolder_MCX, "");

FtpWebRequest requestFileDownload = 
    (FtpWebRequest)WebRequest.Create("ftp://localhost/Source/" + fileName);
requestFileDownload.Credentials = new NetworkCredential("test", "test");
requestFileDownload.Method = WebRequestMethods.Ftp.DownloadFile;

FtpWebResponse responseFileDownload = 
    (FtpWebResponse)requestFileDownload.GetResponse();

Stream responseStream = responseFileDownload.GetResponseStream();
FileStream writeStream = new FileStream(localPath + fileName, FileMode.Create);

int Length = 2048;
Byte[] buffer = new Byte[Length];
int bytesRead = responseStream.Read(buffer, 0, Length);

while (bytesRead > 0)
{
    writeStream.Write(buffer, 0, bytesRead);
    bytesRead = responseStream.Read(buffer, 0, Length);
}

responseStream.Close();
writeStream.Close();

requestFileDownload = null;
responseFileDownload = null;

好吧,听起来您需要按日期对方法进行参数化,然后从该日期生成文件名:

string formattedDate = date.ToString("MM-dd-yyyy", CultureInfo.InvariantCulture);
fzMCX.ExtractZip(
    defaultLocalFolder_MCX + "\\xys" + formattedDate + ".zip", 
    defaultLocalFolder_MCX, "");

然后只需循环调用该方法:

for (DateTime date = startDate; date <= dateTime.endDate; date = date.AddDays(1))
{
    FetchZipFile(date);
}

(我只是猜中了这个名字,因为还不清楚zip文件提取的过程。)

关于代码样式的一些建议:

  • 对所有一次性资源使用using语句,而不是手动关闭它们。 包括WebResponses
  • 变量命名要一致; 通常,局部变量在camelCase中而不是PascalCase中命名
  • 考虑将“将一个流复制到另一个流”代码提取到一个辅助方法中;或者,如果您使用的是.NET 4,请使用Stream.CopyTo
  • 您无需在方法末尾将局部变量设置为null; 这毫无意义,只会在源代码中造成干扰。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM