java - 优化 BufferedReader readLine() 操作

标签 java bufferedreader stringbuilder

我正在尝试使用 HttpsURLConnection 读取服务器的响应。

InputStreamReader in = new InputStreamReader((InputStream) con.getContent());
    BufferedReader buff = new BufferedReader(in);

    String line;
    StringBuilder response=new StringBuilder();
    long st=System.nanoTime();

    while ((line =buff.readLine())!= null) {
        response=response.append(line +"\n");

    } 

    long et=System.nanoTime();
    System.out.println("resp process time: "+((et-st))+" ns");
    return response.toString();
}

目前,读取包含约 80000 个字符(1100 行)的整个响应大约需要 450 毫秒。

输出:响应处理时间:435272240 ns

是否可以进一步优化此代码以减少处理时间?

最佳答案

您创建了一个不必要的临时字符串line + "\n"。您可以避免这种情况。

while ((line = buff.readLine()) != null) {
    response.append(line).append('\n');
} 

您还可以避免使用 BufferedReader(无需扫描输入中的换行符)。

InputStreamReader in = ...
char buffer[] = new char[8192];
int count;
while ((count = in.read(buffer)) != -1)
    response.append(buffer, 0, count);

关于java - 优化 BufferedReader readLine() 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31501066/

相关文章:

java - 使用 Java 删除 XML 文档上的重复节点标记

java - 如何在一个方法中添加多个 return 语句?

java - 识别文件中的每个单词

java - 尝试将字符串 append 到自定义 StringBuilder 时出现重复且不正确的结果

java - StringBuilder中length()和capacity()方法的区别

Java:JComboBox 不接受 enum.values()

java - ch14Eamples.MultipleStageDemo.main 处 Unresolved 编译(MultipleStageDemo.java :24)

Java - 客户端从 in.readLine() 接收空响应

java - InputStream、InputStreamReader 和 BufferedReader 如何在 Java 中协同工作?

string - 使用 intelliJ 将字符串串联重构为 StringBuilder