corda/classpath/java/io/FileInputStream.java
2007-08-14 19:14:55 -06:00

52 lines
1.1 KiB
Java

package java.io;
public class FileInputStream extends InputStream {
static {
System.loadLibrary("natives");
}
private int fd;
public FileInputStream(FileDescriptor fd) {
this.fd = fd.value;
}
public FileInputStream(String path) throws IOException {
fd = open(path);
}
public FileInputStream(File file) throws IOException {
this(file.getPath());
}
private static native int open(String path) throws IOException;
private static native int read(int fd) throws IOException;
private static native int read(int fd, byte[] b, int offset, int length)
throws IOException;
public static native void close(int fd) throws IOException;
public int read() throws IOException {
return read(fd);
}
public int read(byte[] b, int offset, int length) throws IOException {
if (b == null) {
throw new NullPointerException();
}
if (offset < 0 || offset + length > b.length) {
throw new ArrayIndexOutOfBoundsException();
}
return read(fd, b, offset, length);
}
public void close() throws IOException {
close(fd);
fd = -1;
}
}