2015-02-23 26 views
-1

我有一个与服务器交谈的客户端,下面的代码应该在控制台上打印输入的内容 - 跨越多行。Streamreader Readline()抛出异常

问题是,它显示所有行,然后引发异常。

我尝试过不同的方式,以便使其工作,如peek()这会导致最后一行被切断,并引发相同的异常。

有什么我失踪?

using (sr) 
{ 
    try 
    { 
     while (!sr.EndOfStream) 
     { 
     Console.WriteLine(sr.ReadLine()); 
     } 
    } 
    finally 
    { 
    sr.Close(); 
    } 
} 

唯一的例外是信息:System.IO.IOException:无法读取从传输连接数据:A连接尝试失败,因为连接的方没有正确 响应后一段时间,或已建立的连接失败,因为连接的主机无法响应。

我已经使用.ReadTimeout.WriteTimeout只是using (sr)

+1

备注:如果您有使用区块,则不需要尝试/最终/关闭。 – Dai 2015-02-23 23:26:14

+0

请检查这是不是你的问题相关的东西:http://stackoverflow.com/questions/1450263/c-sharp-streamreader-readline-does-not-work-properly – 2015-02-23 23:36:04

+1

其中是你的'sr'的其余部分分配?它应该全部在using语句中(请参阅https://msdn.microsoft.com/en-us/library/yh598w02.aspx中的“使用”最佳实践) – 2015-02-24 00:20:00

回答

0

之前没有更多的情况下,这将是非常困难的解决。您的问题可能源于:

  • 权限:文件可能无法通过应用程序访问。
  • 要读取的文件类型无效。
  • 客户端和服务器之间的问题。

有很多变数,没有更多的上下文。但是,你可以尝试以下操作:

using(var reader = new StreamReader(...)) 
{ 
    string line; 
    while((line = reader.ReadLine()) != null) 
      Console.WriteLine(line); 
} 

如果这样的作品,那么它可能是通过线的内容线倾出到控制台的while(!reader.EndOfStream)之间的问题。

如果您希望提供更多的上下文,我们可以提供更好的帮助。

重要:我你的使用注意到你宣布你StreamReader,你实际上并没有指定为它来读取文件。这会抛出一个异常,所以你可能也想在你的例子中添加它。

你生IOException只能产生下列之一:

  • DirectoryNotFoundException
  • EndOfStreamException
  • FileNotFoundException
  • FileLoadException
  • PathTooLongException

哪些应该可以帮助您识别您的问题。