Java如何逐行读取文本文件内容?
在以下代码示例中,您将学习如何使用ApacheCommonsFileUtils.lineIterator()方法逐行读取文件内容。一次读取一行文件的内容,进行一些处理,然后立即将其从内存中释放,将降低程序使用的内存消耗。
下面的代码段为您提供了该FileUtils.lineIterator()方法的基本用法。您传递要读取的文件和要使用的编码。一个Iterator文件中的线路将被退回。使用hasNext()方法查看是否有要从迭代器读取的行。nextLine()方法将为您提供文件的下一行。
完成迭代器后,我们需要使用LineIterator.close()或LineIterator.closeQuietly()方法将其关闭。
package org.nhooo.example.commons.io; import org.apache.commons.io.FileUtils; import org.apache.commons.io.LineIterator; import java.io.File; import java.net.URL; import java.util.Objects; public class ReadFileLineByLine { public static void main(String[] args) throws Exception { // 从资源目录加载文件。 ClassLoader classLoader = ReadFileLineByLine.class.getClassLoader(); URL url = Objects.requireNonNull(classLoader.getResource("data.txt"), "Resource could not be found."); File file = new File(url.getFile()); try (LineIterator iterator = FileUtils.lineIterator(file, "UTF-8")) { while (iterator.hasNext()) { String line = iterator.nextLine(); System.out.println("line = " + line); } } } }
在上面的示例中,我们从资源目录加载文件。这就是为什么我们使用该ClassLoader.getResource()方法。如果要从绝对路径加载文件,则可以简单地创建一个File对象并将绝对路径传递给该文件。
Maven依赖
commons-io commons-io 2.6