用于在 Java 中读取文件的最佳/最简单的类是啥?
Posted
技术标签:
【中文标题】用于在 Java 中读取文件的最佳/最简单的类是啥?【英文标题】:What are the best/simplest classes used for reading files in Java?用于在 Java 中读取文件的最佳/最简单的类是什么? 【发布时间】:2011-02-05 19:08:26 【问题描述】:我对简单的线处理感兴趣。
【问题讨论】:
在这个较新的相关问题中,对 JDK 的内置文件 IO 类有一个很好的介绍:***.com/questions/19430071/… 【参考方案1】:扫描仪:
for(Scanner sc = new Scanner(new File("my.file")); sc.hasNext(); )
String line = sc.nextLine();
... // do something with line
【讨论】:
喜欢各种各样的方法,Scanner
提供。谢谢。简单干净。【参考方案2】:
看看Scanner 类。
它是在 Java 5 中添加的,以使读取字符串和文件比旧的 FileReaders 和 FileInputStream 链更容易(不再是 new BufferedReader(new FileReader())
只是为了获得 readLine
方法)。
在 Scanner 类中,您可以使用 nextLine
方法一次读取一行,但它也有许多实用方法用于在文件中查找原语和正则表达式。
【讨论】:
@Maxym:这个答案需要补充一个使用示例。谢谢。【参考方案3】:你可以使用BufferedReader
,像这样:-
try
BufferedReader input = new BufferedReader(new FileReader(new File("c:\\test.txt")));
try
String line = null;
while ((line = input.readLine()) != null)
System.out.println(line);
finally
input.close();
catch (IOException ex)
ex.printStackTrace();
【讨论】:
扫描仪似乎更简单,有更多选择。但是感谢您将必要的代码放在这里。 +1 只是“顺便说一句”,当Java7来时,它会有“自动资源管理”,这意味着我们不需要try ... finally out.close()
- 关闭将由JVM完成,它会照顾好它。【参考方案4】:
如果您愿意使用3rd party libraries,那么诸如Files
来自Guava 或FileUtils
来自Apache Commons IO 的实用程序类可以让读取文件变得非常简单。
下面的示例(其中File file = new File("path/to/file.txt")
)将文本文件的所有行读入列表,并将整个文件读入字符串。
番石榴:
List<String> lines = Files.readLines(file, Charsets.UTF_8);
String contents = Files.toString(file, Charsets.UTF_8);
Apache Commons IO:
List<String> lines = FileUtils.readLines(file, "UTF-8");
String contents = FileUtils.readFileToString(file, "UTF-8")
我的推荐(截至 2013 年)是 Guava,这是一个现代、干净、积极维护的库。它通常比 Apache Commons 的东西质量更高。
当然,仅仅为此添加 Guava 是没有意义的,因为它是一个相对较大的库。另一方面,不今天在 Java 项目中使用 Guava 将是 IMO 愚蠢的。 :-)
诚然,JDK 现在为这个特定目的提供了一些足够的工具(Scanner);当something like this 是替代方案时,使用第 3 方库读取文件更合理。
【讨论】:
我确实试图不使用第 3 方库。但是,我以前听说过那个图书馆。它似乎正在获得认可。 @约翰。呵呵,“获得认可”可能是一种表达方式。我的经验是,自 00 年代初以来,Apache Commons 的库一直是典型 Java 项目的中流砥柱(最近加入/被谷歌的库取代,例如 Guava)。当然,在添加依赖项之前应该仔细考虑,但是像 Commons IO 这样的东西通常很容易发挥作用。【参考方案5】:Apache commons 总是一个不错的起点。
见http://commons.apache.org/io/
【讨论】:
【参考方案6】:你可以试试 apache 的 FileUtils。方法如
for(String line: FileUtils.readLines(file))
System.out.println(line);
【讨论】:
【参考方案7】:您还可以使用包装在 BufferedReader 中的 InputStreamReader(使用像 FileInputStream 这样的 InputStream 创建)来简单地读取文件。
【讨论】:
以上是关于用于在 Java 中读取文件的最佳/最简单的类是啥?的主要内容,如果未能解决你的问题,请参考以下文章