fgy*_*ica 8 java url bufferedreader
我试图通过URL上的InputStreamReader(到某些Apache服务器上的文件)使用BufferedReader从Web文档中读取文本.
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();
Run Code Online (Sandbox Code Playgroud)
现在这个工作得很好.但显然我希望读者不要只阅读一行,而是阅读文件中的一行.
查看BufferedReader API,以下代码应该这样做:
while (in.ready()) {
result += in.readLine();
}
Run Code Online (Sandbox Code Playgroud)
即,当有更多行时读取所有行,当没有更多行时停止.但是这段代码不起作用 - 读者从不报告ready()= true!
我甚至可以在读取一行(从文件中读取正确的字符串)之前打印ready()值,但读者将报告" false ".
难道我做错了什么?为什么BufferedReader 会在准备就绪时返回' false '?
ready()!=有更多
ready()并不表示有更多数据需要读取.它仅显示读取是否可以阻止该线程.在您读取所有数据之前,它可能会返回false.
要确定是否没有更多数据检查是否readLine()返回null.
String line = in.readLine();
while(line != null){
...
line = in.readLine();
}
Run Code Online (Sandbox Code Playgroud)
小智 6
另一种绕过它的方法in.ready()就是:
while ((nextLine = in.readLine()) != null) {
result += nextLine;
}
Run Code Online (Sandbox Code Playgroud)
你将继续阅读,直到你完成.这样您就不必担心问题了in.ready().