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