inputstream重写
时间: 2023-09-29 13:03:25 浏览: 91
Java中的InputStream是一个抽象类,它提供了读取输入流中字节的方法。如果你需要实现一个自定义的InputStream,你可以通过继承InputStream并重写其中的方法来实现。
以下是InputStream中常用的方法以及它们的作用:
1. int read():从输入流中读取一个字节的数据并返回,如果已经到达流的末尾则返回-1。
2. int read(byte[] b):从输入流中读取最多b.length个字节的数据并存储到b数组中,返回实际读取的字节数,如果已经到达流的末尾则返回-1。
3. int read(byte[] b, int off, int len):从输入流中读取最多len个字节的数据并存储到b数组中,存储的起始位置为off,返回实际读取的字节数,如果已经到达流的末尾则返回-1。
4. long skip(long n):跳过输入流中的n个字节不读取。
5. int available():返回输入流中可以读取的字节数。
6. void close():关闭输入流并释放与之关联的资源。
下面是一个简单的InputStream的子类示例,它从文件中读取数据:
```
import java.io.*;
public class MyInputStream extends InputStream {
private FileInputStream fis;
public MyInputStream(String fileName) throws FileNotFoundException {
fis = new FileInputStream(fileName);
}
@Override
public int read() throws IOException {
return fis.read();
}
@Override
public int read(byte[] b, int off, int len) throws IOException {
return fis.read(b, off, len);
}
@Override
public void close() throws IOException {
fis.close();
}
}
```
在这个例子中,我们继承了InputStream类并重写了read()、read(byte[] b, int off, int len)和close()方法。在构造方法中,我们创建了一个FileInputStream对象并将其赋值给fis成员变量,然后我们在重写的read()和read(byte[] b, int off, int len)方法中调用了fis的相应方法来读取数据。在重写的close()方法中,我们关闭了fis对象以释放与之关联的资源。
阅读全文