为了处理searchlog文件我正在编写一个Java类,它应该逐行读取和处理文件内容。
日志文件中的文本如下所示
[Integer User ID] [Queury] [Date: YYYY-MM-DD HH:MM:SS] [optional url]
我尝试使用扫描仪并使用nextLine()读取行,但这会将整个文件作为一行读取。知道如何确保一次只能获得一行吗?
答案 0 :(得分:3)
尝试使用BufferedReader
代替Scanner
。 BufferedReader
可以容忍各种不同类型的行终止符 - Scanner
可能总是期望你的平台默认行终止符。
或者,使用Guava可以让您轻松完成此操作,例如使用CharStreams.readLines
,可能指定LineProcessor
。
答案 1 :(得分:3)
您可以直接获取整个文件,然后拆分数据:
for ( String line : "the entire file".split( System.getProperty("line.separator") )
{
System.out.println( line );
}
作为旁注:System.getProperty("line.separator")
是通用换行符。
另一种方法:
BufferedReader bufferedReader = new BufferedReader( new FileReader( "absolute file path" ) );
String line;
while ( ( line = bufferedReader.readLine() ) != null)
{
System.out.println( line );
}