2011-04-05 33 views
0

我可以从C#下载ftp文件,但它会下载当前日期文件。我需要将文件从以前的日期下载到当前日期。例如,我的文件是:如何从上一个日期下载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; 

回答

4

嗯,这听起来像你需要按日期参数的方法,然后生成的文件名自该日起:

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
  • 在你的变量命名中保持一致;通常局部变量在驼峰而不是PascalCase命名为
  • 考虑提取“复制一个流的另一个”代码到一个辅助方法 - 或者,如果你使用.NET 4,使用Stream.CopyTo
  • 你并不需要在方法结束时将局部变量设置为null;它没有意义,只会在源代码中产生噪音。
+0

感谢您的帮助,我无法理解如何更改代码,你可以修改矿山上面的代码,你可以给我发修改后的完整代码 – 2011-04-05 05:52:23

+0

@ user691235:我发现你的改变你的只有一点需要您向我们展示的代码指定了一个文件名。我的猜测是,你需要为'fileName'变量做同样的事情,但是你没有显示来自哪里。你不明白我的建议哪一点?给你完整的代码是没有意义的 - 如果你遵循我所做的并且自己应用它,这会更好。 – 2011-04-05 05:58:56

+0

代码是字符串dateString = DateTime.Now.ToString(“MM-dd-yyyy”); string filename = string.Format(“xys {0} .zip”,dateString); string localPath =“c:\\”; string fileName = filename; string defaultLocalFolder_MCX =“C:\\”; – 2011-04-05 06:08:27

相关问题