我对简单的线条处理感兴趣。
答案 0 :(得分:7)
查看Scanner课程。
在Java 5中添加了它,使得读取字符串和文件比旧的FileReaders和FileInputStream链更容易(不再需要new BufferedReader(new FileReader())
来获取readLine
方法)。
在Scanner类中,您可以使用nextLine
方法一次读取一行,但它也有许多用于在文件中查找基元和正则表达式的util方法。
答案 1 :(得分:7)
扫描仪:
for(Scanner sc = new Scanner(new File("my.file")); sc.hasNext(); ) {
String line = sc.nextLine();
... // do something with line
}
答案 2 :(得分:4)
您可以使用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();
}
答案 3 :(得分:2)
如果您愿意使用3rd party libraries,那么来自Files
的Guava或来自FileUtils
的Apache Commons IO等实用程序类会使读取文件非常重要简单。
以下示例(其中File file = new File("path/to/file.txt")
)将文本文件的所有行读入List,并将整个文件读入String。
番石榴:
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的质量更高。
当然,为此添加番石榴是没有意义的,因为它是一个相对较大的库。另一方面,今天在Java项目中使用Guava的不会让IMO变得愚蠢。 :-)
诚然,JDK现在为此特定目的提供了一些适当的工具(Scanner);当something like this替代时,使用第三方库来阅读文件更合理。
答案 4 :(得分:1)
Apache commons始终是一个很好的起点。
答案 5 :(得分:1)
你可以试试apache的FileUtils。像
这样的方法for(String line: FileUtils.readLines(file)) {
System.out.println(line);
}
答案 6 :(得分:0)
你也可以使用包装在BufferedReader中的InputStreamReader(你使用像FileInputStream这样的InputStream创建)来简单地读取文件行。