当我将一个大文件传递到扫描仪时,下面的代码块将抛出一个java.lang.OutOfMemoryError异常。解决这个问题的最好方法是什么?问题在列单里还是扫描器里?
ArrayList rawData = new ArrayList();
Scanner scan = new Scanner(file);
while (scan.hasNext()) {
String next = scan.next();
rawData.add(next);
}
我有一个大文件,它有超过100万行,还有另一个文件,它有我需要使用的输入字符串,以使大文件中的行匹配。
我就是这样做的:
File.open(strings_file, 'r') do |l|
File.open(large_file, 'r') do |line|
next if !line.include?(l)
puts line
end
end
但是,它将为每个循环打开大文件。例如,在输入字符串中,我有100行字符串,所以当它执行时,它将打开这个大文件100次来处理它,这需要更多的时间来完成。
是否有更快的方法来避免打开大文件10