为了处理搜索日志文件,我正在编写一个 Java 类,它应该逐行读取和处理文件内容。
日志文件中的文本如下所示
[Integer User ID] [Queury] [Date: YYYY-MM-DD HH:MM:SS] [optional url]
我尝试使用扫描仪并使用 nextLine() 读取行,但这会将整个文件读取为一行。知道如何确保一次只能获得一条线路吗?
尝试使用BufferedReader
而不是Scanner
. BufferedReader
可以容忍各种不同类型的行终止符 - 可能Scanner
总是需要您的平台默认行终止符。
或者,使用Guava,它可以让您非常轻松地做到这一点,例如使用CharStreams.readLines
,可能指定 a LineProcessor
。
您可以直接抓取整个文件,然后拆分数据:
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 );
}