我想通過URL上的InputStreamReader(到某些Apache服務器上的文件)上的InputStreamReader上使用BufferedReader從Web文檔中讀取文本。BufferedReader沒有說明'準備好'它應該
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'準備好時,實際上有東西要讀?
我不知道它是否有任何重要性,但實際上URL指向使用HTTPS的位置。但是,證書正確地安裝在服務器和運行上述代碼的機器上。 readLine()也返回第一行,沒有問題。 – fgysin 2011-01-21 14:42:02
當等待數據時它將準備就緒,但在執行讀取/讀取線路之前它不會等待數據。即使有數據等待,它可能不是一個完整的行,所以readLine()會阻止。 – 2011-01-21 14:51:25
洛塔很好的答案,thx每一個。可悲的是我只能將其中一個標記爲已接受的答案。 :) – fgysin 2011-01-26 13:35:29