Java,限制BufferedReader的读取时间

时间:2013-12-18 00:02:29

标签: java timeout max bufferedreader execution-time

我已经编写了这段非常经典的代码来阅读网址内容。

// Prepares the connection
URL url = new URL(urlString);
URLConnection uc = url.openConnection();

// Reads the data
StringBuilder data;
String inputLine;
try (InputStreamReader isr = new InputStreamReader(uc.getInputStream(), "utf-8");
     BufferedReader in = new BufferedReader(isr)) {
    data = new StringBuilder();
    while ((inputLine = in.readLine()) != null) {
        data.append(inputLine);
    }
}

// Returns the read data
return data.toString();

但有时候,我正在阅读的网址包含太多数据,或者客户端连接太慢,或者其他什么......因此读取时间太长。

有没有办法向BufferedReader(或者对于InputStreamReader,或者对于URLConnection?)指定“最大读取时间”?理想情况下,它会在达到“最大读取时间”后抛出TimeoutException。

我做了一些研究,但我发现的只是对收到数据大小的限制,而不是执行时间。

1 个答案:

答案 0 :(得分:4)

在开始阅读之前,请致电URLConnection.setReadTimeout()。如果超时到期,将抛出SocketTimeoutException