c# – 如何:将StreamReader内容保存在字符串中
发布时间:2020-12-15 22:06:18 所属栏目:百科 来源:网络整理
导读:如何:将StreamReader内容保存在字符串中 我想在一个字符串中保存StreamReader内容.不幸的是,我不允许保存内容,因为对象似乎丢失了(来自FTP服务器). 错误信息GERMAN:Auf das verworfene Objekt kann nicht zugegriffen werden. Objektname:“System.Net.So
如何:将StreamReader内容保存在字符串中
我想在一个字符串中保存StreamReader内容.不幸的是,我不允许保存内容,因为对象似乎丢失了(来自FTP服务器). 错误信息GERMAN:Auf das verworfene Objekt kann nicht zugegriffen werden. 错误消息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); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |