当前位置: 首页 > 面试题库 >

BufferedReader应该在什么时候不声明“就绪”

乔鸿骞
2023-03-14
问题内容

我正在尝试使用 BufferedReader 通过URL上的InputStreamReader
从Web文档中读取文本(到某些Apache服务器上的文件)。

String result = "";
URL url = new URL("http://someserver.domain/somefile");
BufferedReader in = null;
in = new BufferedReader(new InputStreamReader(url.openStream(), "iso-8859-1"));

result += in.readLine();

现在,这很好。但是显然,我希望读者不要只读一行,而应该读文件中的所有行。
查看BufferedReader API,以下代码应做到这一点:

while (in.ready()) {
    result += in.readLine();
}

即在有更多行时读取所有行,在没有更多行时停止。但是,此代码不起作用-读者 永远不会 报告 ready()= true

我什至可以在读取一行(从文件中读取正确的字符串)之前立即打印ready()值,但阅读器将报告’ false ‘。

难道我做错了什么?当实际上有要读取的内容时,为什么BufferedReader 在就绪时返回false ”?


问题答案:

ready()!=还有更多

ready()并不表示还有更多数据要读取。它仅显示读取 是否 会阻塞线程。在读取所有数据之前,它很可能会返回false。

要找出是否没有更多数据,请检查是否readLine()返回null

String line = in.readLine();
while(line != null){
   ...
   line = in.readLine();
}


 类似资料:
  • 问题内容: 我是OOP范式的新手,所以可能对此问题有一个简单的解释… 您是否总是需要在类中声明公共对象范围的变量?例如: 在此代码中,即使是唯一声明的变量,也一样可访问和可用-似乎就像我将其声明为public一样。 如果未声明的类变量始终可以这样访问,那么将它们全部预先声明的意义何在? 问题答案: 该变量不是未初始化的,只是未声明的。 在类定义中声明变量是提高可读性的一种方式。另外,您可以设置可访

  • 声明集合不会抑制其任何功能(仍然可以、、、等),但允许编译器进行更多优化。 在什么情况下,最好更改引用(不允许使用final)而不是使用现有集合的方法?

  • 问题内容: 我知道他们两个都禁用了Nagle的算法。 我什么时候应该/不应该使用它们中的每一个? 问题答案: 首先,不是所有人都禁用Nagle的算法。 Nagle的算法用于减少有线中更多的小型网络数据包。该算法是:如果数据小于限制(通常是MSS),请等待直到收到先前发送的数据包的ACK,同时累积用户的数据。然后发送累积的数据。 这将对telnet等应用程序有所帮​​助。但是,在发送流数据时,等待A

  • 问题内容: 在该类中,有两个字符串,和。 有什么不同?我什么时候应该使用另一个? 问题答案: 如果你的意思是和则: 用于在文件路径列表中分隔各个文件路径。考虑在上的环境变量。您使用a分隔文件路径,因此在上将是;。 是或用于拆分到特定文件的路径。例如在上,或

  • 问题内容: 在集成我以前从未使用过的Django应用程序时,我发现了用于定义类中函数的两种不同方式。作者似乎非常有意地使用了它们。第一个是我自己经常使用的: 另一个是我不使用的,主要是因为我不知道何时使用它,以及什么用途: 在Python文档中,装饰器的解释如下: 类方法将类作为隐式第一个参数接收,就像实例方法接收实例一样。 所以我想指的是自己(而不是实例)。我不完全理解为什么会这样,因为我总是可

  • 问题内容: 我想知道是否有人可以在CSS中!important声明 无法 覆盖内联样式时放些权威参考摘要。 问题答案: 确定哪些样式相互替代涉及许多因素。样式声明出现在 级联中 的位置越低,则它在定位元素时 越具体 ,则与其他样式的权衡就越大。 这是样式继承的CSS2标准: 如果级联产生一个值,请使用它。 否则,如果属性是继承的,则使用父元素的值,通常是计算值。 否则,请使用属性的初始值。每个属性