C# 如何:以字符串形式保存StreamReader内容
如何:以字符串形式保存StreamReader内容 我正在尝试将C# 如何:以字符串形式保存StreamReader内容,c#,wpf,string,ftp,streamreader,C#,Wpf,String,Ftp,Streamreader,如何:以字符串形式保存StreamReader内容 我正在尝试将StreamReader内容保存为字符串。不幸的是,我不允许保存内容,因为对象似乎丢失了(来自FTP服务器) 德语错误消息:这是一个错误。 ObjectName:“System.Net.Sockets.NetworkStream”。 StreamReader streamReader = new StreamReader(responseStream); string text = streamReader.ReadToEnd();
StreamReader
内容保存为字符串。不幸的是,我不允许保存内容,因为对象似乎丢失了(来自FTP服务器)
德语错误消息:这是一个错误。
ObjectName:“System.Net.Sockets.NetworkStream”。
StreamReader streamReader = new StreamReader(responseStream);
string text = streamReader.ReadToEnd();
错误消息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
,您将注意到布尔属性为false
以这种方式多次读取流总是会导致错误。在下一次调用ReadToEnd()
之前,您应该先调用Seek(0,0)
。然而,在这种情况下,调用responseStream.Seek(0,0)
将导致抛出NotSupportedException
将结果赋给中间变量一次将有效。也可以使用使用
块,而不是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);
}
}
这里的StreamReader没有什么问题,它只是从底层流返回一个异常。首先,你是如何构建responseStream的?谢谢。请看我的完整代码编辑后的文章。只是一些来自德国同胞的一般建议:卸载所有语言包。英语信息更准确,更容易得到帮助,职业发展也用英语进行。(英文消息会逐字告诉您正在访问已处理的对象。由于翻译错误,您无法识别此事实。)作为解决方法,请使用
WebClient.DownLoadString()
将所有代码替换为一行。感谢您的帮助。我将卸载所有语言包,并尝试使用该解决方法。但是,我的问题没有解决。:-)