ソートされる別のプレーンテキストファイルから CSV ファイルを作成しようとしていて、それを BufferedReader で読み取ろうとしています。問題は、同時に実行するか、最初に AWK 部分を実行してから読み取るかです..
AWK ファイル作成部分:
String uniqueSubscribersCommand = "cat " + originalFile +
" | awk '$1~/^[0-9]*$/ {print $0}' | sort -k 1 | awk '{print $1}' | uniq >> " +
uniqueFile;
try
{
Runtime.getRuntime().exec( new String[]{"/bin/sh", "-c", uniqueSubscribersCommand} );
}
catch ( IOException e )
{
logger.error( "Error during unique subscriber determination" );
}
作成部分の直後にある読み取り部分:
FileInputStream uniqueFis = new FileInputStream( uniqueFile );
BufferedReader brUnique = new BufferedReader( new InputStreamReader( uniqueFis ) );
while ( ( subscriberId = brUnique.readLine() ) != null )
{
// do stuff
}
AWKコマンドを実行した直後にスレッドをスリープ状態にすると、Javaがファイルを作成時に読み取ることができるかどうかを知りたいので、作成と読み取りの間に10秒のギャップを作りましょう。
アドバイスをありがとう!