検索ログファイルを処理するために、ファイルの内容を1行ずつ読み取って処理するJavaクラスを作成しています。
ログファイルのテキストは次のようになります
[Integer User ID] [Queury] [Date: YYYY-MM-DD HH:MM:SS] [optional url]
スキャナーを使用してnextLine()で行を読み取ろうとしましたが、これによりファイル全体が1行として読み取られます。一度に1行だけを取得するようにするにはどうすればよいですか?
BufferedReader
の代わりに使用してみてくださいScanner
。BufferedReader
は、さまざまなタイプのラインターミネータに耐性がありScanner
ます。プラットフォームのデフォルトのラインターミネータを常に期待している可能性があります。
または、Guavaを使用すると、これを非常に簡単に行うことができます。たとえば、を指定してCharStreams.readLines
、を指定することもできます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 );
}