メモ:ファイルを途中から操作するときはRandomAccessFileを使うといい
Javaファイルの更新分を取得する処理を描けないかな~と思い調べていた所 RandomAccessFileというものがあることがわかったので実装してみた。
InputStreamで読み込むと頭からreadline()して該当の行までいかないといけない。
RandomAccessFileは seek(long pointer)を利用することで 途中から読み込みをすることできる。
なので、更新分をとるために * 前回のポインタを取得 * seek()でポインタに移動 * readline()で読み込み * 最後まで終わったらlength()で今の最後尾ポインタを保持しておく
サンプルコード
private long pointer;
public void execute(File inFile) {
RandomAccessFile raf;
try {
raf = new RandomAccessFile(inFile, "r");
// なにかしらの方法でしーくするポインタを保持
raf.seek(pointer);
String line;
// ログのヘッダーデータを作成
Log log = null;
while *1 != null) {
System.out.println(line);
}
}
// ポインタをセット
this.pointer= raf.length();
raf.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
*1:line = raf.readLine(