我遇到了一个奇怪的错误。
我需要从今天上传的excel下载一些文件。 FTP上的文件的时间戳附加文件名。 代码如下:
FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(strUrl);
ftpRequest.Credentials = new NetworkCredential(strUserName, strPassword);
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
StreamReader streamReader = new StreamReader(response.GetResponseStream());
Stream responseStream = response.GetResponseStream();
string line = streamReader.ReadLine();
while (!streamReader.EndOfStream)
{
if (line.Contains(DateTime.Now.ToString("yyyyMMdd")))
{
strDownloadFilesName.Add(line);
downloadPath = downloadPath + line;
byte[] buffer = new byte[2048];
FileStream fs = new FileStream(downloadPath, FileMode.Create);
int ReadCount = responseStream.Read(buffer, 0, buffer.Length);
while (ReadCount > 0)
{
fs.Write(buffer, 0, ReadCount);
ReadCount = responseStream.Read(buffer, 0, buffer.Length);
}
string ResponseDescription = response.StatusDescription;
//fs.Close();
//responseStream.Close();
}
line = streamReader.ReadLine();
}
在上面的代码中,一旦if条件为真,则经过一些迭代后,
line = streamReader.ReadLine();
此行抛出错误:
Cannot access dispose object.
Object name: 'System.Net.Sockets.NetworkStream'.
请帮帮我。 提前谢谢。
答案 0 :(得分:0)
作为问题解决方案的一部分,我需要进行不同的调用来实现它,而不是通过单次调用来循环它。
答案 1 :(得分:-1)
您可以尝试以下内容,
using (StreamReader streamread = new StreamReader(responseStream))
{
string responseString = streamread.ReadToEnd();
}
因此,不要一次读取一行,而是一次读取整个流。 希望它有所帮助。