【问题标题】:Java reading file with specifying memory limit指定内存限制的Java读取文件
【发布时间】:2015-04-12 12:38:10
【问题描述】:

您好,我只是想知道在使用 Apache 或 BufferedReader 或 Scanner 的 LineIterator 读取超过 2gb 大小的文本文件时,是否可以限制 (JVM) 的内存大小?
假设我有 2gb 的文本文件,我只想为该文件读取 500mb。当我达到 500mb 时,我将销毁保存数据的变量(字符串),它将继续再次读取另外 500mb 的文本文件,直到达到文本文件的最大大小。所以这就像将文本文件拆分为 500mb。

    LineIterator it = FileUtils.lineIterator(file,"UTF-8");

    String line = null;

            try {
                    while (it.hasNext()) {
                    line = it.nextLine();


                    }

【问题讨论】:

  • 最简单的方法 - 创建一个500mb byte[] 并填写它。
  • 但是数据是字符串而不是字节
  • 文件中的所有内容都是字节。如果你愿意,你可以创建一个char[]
  • 我应该将数据线存储在 byte[] 中吗?如果 byte[] 达到 500mb,我将创建语句。
  • 什么意思如果字节[]达到500mb,我会创建语句。数组具有特定的大小。

标签: java io iterator java.util.scanner bufferedreader


【解决方案1】:

您可以使用 BufferedReader(Reader in,int sz) 读取文件

BufferedReader(new FileReader("c:\data\input-file.txt"),8 * 1024)

【讨论】:

  • 8*1024是什么意思?是否声明了最大尺寸?
  • 这是我试过的尺寸,请改一下
猜你喜欢
  • 1970-01-01
  • 2017-12-06
  • 2012-06-04
  • 1970-01-01
  • 2011-12-21
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多