【问题标题】:Optimizing BufferedReader for large input in java为java中的大输入优化BufferedReader
【发布时间】:2014-12-28 01:29:09
【问题描述】:

我正在尝试使用以下代码从标准输入中读取大约 200 万个字符长的单行:

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
s = in.readLine();

对于上述输入,s = in.readLine(); 行需要 30 多分钟才能执行。

有没有更快的方法来读取这个输入?

【问题讨论】:

  • 你为什么要这样做?
  • 你打算用单行做什么?那是你要创建的一个巨大的字符串。
  • @KingSweeney,如果您认为它可以帮助您并解决问题,我可以请您接受答案:)

标签: java performance buffer bufferedreader large-data-volumes


【解决方案1】:

不要尝试逐行读取,而是尝试读取字符缓冲区

试试这样的

BufferedInputStream in = null;
try {
    in = new BufferedInputStream(new FileInputStream("your-file"));

    byte[] data = new byte[1024];
    int count = 0;

    while ((count = in.read(data)) != -1) {
      // do what you want - save to other file, use a StringBuilder, it's your choice
    }
} catch (IOException ex1) {
  // Handle if something goes wrong
} finally {
    if (in != null) {
      try {
        in.close();
      } catch (IOException ) {
        // Handle if something goes wrong
      }
    }
}

【讨论】:

    猜你喜欢
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 2019-11-27
    • 1970-01-01
    • 2016-09-04
    • 2011-02-27
    相关资源
    最近更新 更多