InputStream wrapper to read files w/ sudo
This commit is contained in:
parent
082c64e00c
commit
d9a2f6f284
|
@ -0,0 +1,68 @@
|
||||||
|
package net.hyperic.sigar;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* InputStream wrapper for 'sudo cat filename'
|
||||||
|
*/
|
||||||
|
public class SudoFileInputStream extends InputStream {
|
||||||
|
private Process process;
|
||||||
|
private InputStream is;
|
||||||
|
|
||||||
|
public SudoFileInputStream(String file)
|
||||||
|
throws IOException, FileNotFoundException {
|
||||||
|
this(new File(file));
|
||||||
|
}
|
||||||
|
|
||||||
|
public SudoFileInputStream(File file)
|
||||||
|
throws IOException, FileNotFoundException {
|
||||||
|
if (!file.exists()) {
|
||||||
|
throw new FileNotFoundException();
|
||||||
|
}
|
||||||
|
String[] args = {
|
||||||
|
"sudo", "cat", file.toString()
|
||||||
|
};
|
||||||
|
this.process = Runtime.getRuntime().exec(args);
|
||||||
|
this.is = this.process.getInputStream();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void close() throws IOException {
|
||||||
|
this.process.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* passthru all other InputStream methods */
|
||||||
|
public int read() throws IOException {
|
||||||
|
return this.is.read();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int read(byte b[]) throws IOException {
|
||||||
|
return this.is.read(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int read(byte b[], int off, int len) throws IOException {
|
||||||
|
return this.is.read(b, off, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long skip(long n) throws IOException {
|
||||||
|
return this.is.skip(n);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int available() throws IOException {
|
||||||
|
return this.is.available();
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized void mark(int readlimit) {
|
||||||
|
this.is.mark(readlimit);
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized void reset() throws IOException {
|
||||||
|
this.is.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean markSupported() {
|
||||||
|
return this.is.markSupported();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue