java - 使用 BufferedReader.readLine() 读取 inputStream 太慢

标签 java sockets io

我正在使用以下代码。

BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;

StringBuilder responseData = new StringBuilder();
while((line = in.readLine()) != null) {
    responseData.append(line);
}

但是读取 200 行需要超过 12 秒。

请帮忙

最佳答案

我强烈怀疑这是因为网络连接或您正在与之交谈的网络服务器 - 这不是 BufferedReader 的错。尝试测量这个:

InputStream stream = conn.getInputStream();
byte[] buffer = new byte[1000];
// Start timing
while (stream.read(buffer) > 0)
{
}
// End timing

我想您会发现它几乎与解析文本的时间完全相同。

请注意,您还应该为 InputStreamReader 提供适当的编码 - 几乎可以肯定,平台默认编码不是您应该使用的编码。

关于java - 使用 BufferedReader.readLine() 读取 inputStream 太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5594725/

相关文章:

java new 运算符和 hashcode()

Java BufferedReader 读取表单套接字不返回 null

c++ - C 文件* 到 ostream/istream

java - 从文件系统和 jar 内部读取相同的文件得到不同的结果

java - 在Java中寻找带有两个旋钮的滑动条

java - 如何获取上周一凌晨 2-00 点?

java - 在 Android Java 中从客户端使用 GET\POST 调用服务器方法

c++ - 有什么类似于 boost::asio 中的 QSocketNotifier 吗?

Python 套接字服务器 : Reject connection from address

c - 在C中进行输入解析并确定要转发到的位置