我可以从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;发布于 2011-04-05 13:31:44
嗯,听起来您需要按日期对方法进行参数化,然后从该日期生成文件名:
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.Stream.CopyTohttps://stackoverflow.com/questions/5547592
复制相似问题