微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如何:将StreamReader内容保存在字符串中

如何:将StreamReader内容保存在字符串中

我想在一个字符串中保存StreamReader内容.不幸的是,我不允许保存内容,因为对象似乎丢失了(来自FTP服务器).

错误信息GERMAN:Auf das verworfene Objekt kann nicht zugegriffen werden.
Objektname:“System.Net.sockets.NetworkStream”.

错误消息ENGLISH:无法访问抛弃对象.对象名:“System.Net.sockets.NetworkStream”.

StreamReader streamReader = new StreamReader(responseStream);
string text = streamReader.ReadToEnd();

错误来自第2行.

编辑:

public void DownloadFileWithFtp()
    {
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://XYZ.bplaced.net/Testumgebung/Texte/" + comboBox_DataPool.SelectedValue);
        request.Credentials = new NetworkCredential("BN","PW");
        request.Method = WebRequestMethods.Ftp.DownloadFile;

        FtpWebResponse response = (FtpWebResponse)request.GetResponse();
        Stream responseStream = response.GetResponseStream();

        StreamReader streamReader = new StreamReader(responseStream);
        MessageBox.Show(streamReader.ReadToEnd());
        //textBoxText = streamReader.ReadToEnd();
        streamReader.Close();

        MessageBox.Show(response.StatusDescription);
        response.Close();
    }

解决方法

如果检查从FtpWebResponse的GetResponseStream()方法返回的responseStream,您会注意到布尔属性 CanSeek为false.

以这种方式多次读取流将总是导致错误.在下一次调用ReadToEnd()之前,你应该先调用Seek(0,0).但是,在这种情况下,调用responseStream.Seek(0,0);会导致抛出NotSupportedException.

将结果分配给中间变量将起作用.也可以使用Using块而不是Close()方法

public void DownloadFileWithFtp() {
  FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://XYZ.bplaced.net/Testumgebung/Texte/" + comboBox_DataPool.SelectedValue);
  request.Credentials = new NetworkCredential("BN","PW");
  request.Method = WebRequestMethods.Ftp.DownloadFile;

  using(FtpWebResponse response = (FtpWebResponse)request.GetResponse()) {
    using(Stream responseStream = response.GetResponseStream()) {
      using(StreamReader streamReader = new StreamReader(responseStream)) {
        string content = streamReader.ReadToEnd();
        MessageBox.Show(content);
        textBox.Text = content;
      }
    }
    MessageBox.Show(response.StatusDescription);
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐