一:InputStream初识
- 是输入字节流的父类,它是一个抽象类(一般用他的子类)
- 在Java中,InputStream是所有字节输入流的超类。
- 它定义了字节流输入的基本操作,如读取字节、跳过字节和标记/重置流等。
- 通过InputStream,我们可以从文件、网络连接或其他数据源中读取字节数据。
二:常见方法
- int read()
- 从输入流中读取单个字节,返回0到255范围内的int字节值, 字节数据可直接转换为int类型
- 如果已经到达流末尾而没有可用的字节,则返回-1
- int read(byte[] b):
- 从输入流中读取最多b.length个字节的数据到字节数组b中,并返回实际读取的字节数。
- 如果因为已经到达流末尾而没有更多的数据,则返回-1。
- int read(byte[] b, int off, int len):
- 从输入流中读取最多len个字节的数据到字节数组b中,从off指定的偏移量开始存储,并返回实际读取的字节数。
- 如果因为已经到达流末尾而没有更多的数据,则返回-1。
- long skip(long n):
- 跳过输入流中的n个字节。如果实际跳过的字节数小于n,则可能是因为已经到达流的末尾。
- 此方法返回实际跳过的字节数。
- int available():返回可以从此输入流中读取的字节数的估计值。
- void close():关闭此输入流并释放与该流关联的系统资源。
三:常见子类
- FileInputStream
- 抽象类InputStream用来具体实现类的创建对象, 文件字节输入流, 对文件数据以字节的形式进行读取操作
public FileInputStream(String name) throws FileNotFoundException
public FileInputStream(File file) throws FileNotFoundException
四:案例实践
package chapter11;
import java.io.*;
public class InputStreamDemo {
public static void main(String[] args) throws IOException {
String dir = "/Users/mz/IdeaProjects/xdclass-count/src/chapter11";
String name = "abc.txt";
File file = new File(dir,name);
InputStream inputStream =new FileInputStream(file);
byte[] bufffer = new byte[1024];
int bytesRead = 0;
while((bytesRead = inputStream.read(bufffer)) != -1){
String str = new String(bufffer,0,bytesRead);
System.out.println(str);
};
inputStream.close();
}
}