[SIGAR-133] use InputStream.skip (bytes) instead of Reader.skip (chars) in onChange

This commit is contained in:
Doug MacEachern 2009-01-09 05:41:52 +00:00
parent bd2178d0cf
commit a7495637a9
1 changed files with 10 additions and 5 deletions

View File

@ -18,8 +18,10 @@
package org.hyperic.sigar;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
@ -54,24 +56,24 @@ public abstract class FileTail extends FileWatcher {
}
public void onChange(FileInfo info) {
InputStream in = null;
Reader reader = null;
String name = info.getName();
try {
if (this.useSudo) {
reader =
new InputStreamReader(new SudoFileInputStream(name));
in = new SudoFileInputStream(name);
}
else {
reader = new FileReader(name);
in = new FileInputStream(name);
}
long offset = getOffset(info);
if (offset > 0) {
reader.skip(offset);
in.skip(offset); //use InputStream to skip bytes
}
reader = new InputStreamReader(in);
tail(info, reader);
} catch (IOException e) {
error(name, e);
@ -79,6 +81,9 @@ public abstract class FileTail extends FileWatcher {
if (reader != null) {
try { reader.close(); } catch (IOException e) { }
}
if (in != null) {
try { in.close(); } catch (IOException e) { }
}
}
}