利用以下函数从服务器下载,51个文件,程序没有报错,但是执行结束之后,中间出现2个文件时0kb,但实际是有内容的。想问下大家有没有遇到这个的问题,如何产生的。
/// <summary>
/// 下载
/// </summary>
/// <param name="filePath">路径</param>
/// <param name="fileName">文件名</param>
public void Download(string filePath, string fileName)
{
FtpWebRequest reqFTP;
try
{
FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create); reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileName));
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
reqFTP.UseBinary = true;
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
Stream ftpStream = response.GetResponseStream();
long cl = response.ContentLength;
int bufferSize = 2048;
int readCount;
byte[] buffer = new byte[bufferSize]; readCount = ftpStream.Read(buffer, 0, bufferSize);
while (readCount > 0)
{
outputStream.Write(buffer, 0, readCount);
readCount = ftpStream.Read(buffer, 0, bufferSize);
} ftpStream.Close();
outputStream.Close();
response.Close();
}
catch (Exception ex)
{
Insert_Standard_ErrorLog.Insert("FtpWeb", "Download Error --> " + ex.Message);
}
}
/// <summary>
/// 下载
/// </summary>
/// <param name="filePath">路径</param>
/// <param name="fileName">文件名</param>
public void Download(string filePath, string fileName)
{
FtpWebRequest reqFTP;
try
{
FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create); reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileName));
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
reqFTP.UseBinary = true;
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
Stream ftpStream = response.GetResponseStream();
long cl = response.ContentLength;
int bufferSize = 2048;
int readCount;
byte[] buffer = new byte[bufferSize]; readCount = ftpStream.Read(buffer, 0, bufferSize);
while (readCount > 0)
{
outputStream.Write(buffer, 0, readCount);
readCount = ftpStream.Read(buffer, 0, bufferSize);
} ftpStream.Close();
outputStream.Close();
response.Close();
}
catch (Exception ex)
{
Insert_Standard_ErrorLog.Insert("FtpWeb", "Download Error --> " + ex.Message);
}
}
解决方案 »
- C# Jquery下屏蔽Backspace异常
- 怎样在父窗口中改变子窗口的值
- asp.net应用程序添加web窗体时为什么不能选择母版页?
- 用一个程序调用另一个安装好的aa.exe时,aa.exe窗体闪了一下就退出了.这是什摸原因呢?
- 在C# WINFORM中怎么样作一个日期的控件???十万加急...
- 命名空间问题
- System .Runtime .Remoting .Channels . Tcp
- 输入五个整数比较大小 请问怎么弄?
- 一个变量的问题
- 为什么base class method call derived class method?
- C# 怎样用textbox 实现百度搜索功能。
- 高手们 socket能实现广域网的聊天吗?
如果是固定的,跟踪看看具体哪一步有问题;
如果随机出现,大概和你外层调用的循环有关系,在循环之间加上一段等待时间看看,是否两次ftp下载时间太接近造成干扰.