StreamReader 对象被自动释放

StreamReader object got automatically disposed

我遇到了一个奇怪的错误。

我需要从 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'.

请帮我解决一下。 提前致谢。

您可以尝试以下操作,

 using (StreamReader streamread = new StreamReader(responseStream))
 {
      string responseString = streamread.ReadToEnd();
 }

因此,与其一次读取一行,不如一次读取整个流。 希望对你有帮助。

作为问题解决方案的一部分,我需要进行不同的调用来实现它,而不是通过调用一次来循环它。