我正在尝试使用Apache Commons的
这里我做错了什么?阅读了一些文档后,难道不是LineIterator应该从文件系统中读取文件,而不是将其加载到内存中吗?
请注意,代码是用Scala编写的:
感谢您的帮助!
谢谢!
FileUtils.lineIterator
逐行迭代一个1.2GB的文件。然而,一旦LineIterator
调用hasNext()
,我会收到一个java.lang.OutOfMemoryError: Java heap space
。我已经为Java堆分配了1G
。这里我做错了什么?阅读了一些文档后,难道不是LineIterator应该从文件系统中读取文件,而不是将其加载到内存中吗?
请注意,代码是用Scala编写的:
val file = new java.io.File("data_export.dat")
val it = org.apache.commons.io.FileUtils.lineIterator(file, "UTF-8")
var successCount = 0L
var totalCount = 0L
try {
while ( {
it.hasNext()
}) {
try {
val legacy = parse[LegacyEvent](it.nextLine())
BehaviorEvent(legacy)
successCount += 1L
} catch {
case e: Exception => println("Parse error")
}
totalCount += 1
}
} finally {
it.close()
}
感谢您的帮助!
谢谢!