繁体   English   中英

Java,限制BufferedReader的读取时间

[英]Java, limit the BufferedReader reading time

我已经编写了这段非常经典的代码来读取URL的内容。

// 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();

但是有时候,我正在读取的url包含太多数据,或者客户端连接太慢,或者其他任何原因,因此读取需要太多时间。

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

我进行了一些研究,但我只能找到对接收到的数据大小的限制,而不是执行时间的限制。

在开始读取之前,只需调用URLConnection.setReadTimeout() 如果超时到期,将引发SocketTimeoutException

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM