1

为了处理搜索日志文件,我正在编写一个 Java 类,它应该逐行读取和处理文件内容。

日志文件中的文本如下所示

[Integer User ID] [Queury] [Date: YYYY-MM-DD HH:MM:SS] [optional url]

我尝试使用扫描仪并使用 nextLine() 读取行,但这会将整个文件读取为一行。知道如何确保一次只能获得一条线路吗?

4

2 回答 2

3

尝试使用BufferedReader而不是Scanner. BufferedReader可以容忍各种不同类型的行终止符 - 可能Scanner总是需要您的平台默认行终止符。

或者,使用Guava,它可以让您非常轻松地做到这一点,例如使用CharStreams.readLines,可能指定 a LineProcessor

于 2012-04-23T18:31:08.543 回答
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 );
}
于 2012-04-23T18:31:44.980 回答