Java之输入流InputStream及代码精析
文章目录
一:InputStream初识二:常见方法三:常见子类四:案例实践
一: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);
//创建一个 1024 字节的缓冲区数组。
byte[] bufffer = new byte[1024];
//初始化读取字节数的变量。
int bytesRead = 0;
//inputStream.read(bufffer) 读取数据到 bufffer,并返回实际读取的字节数。
while((bytesRead = inputStream.read(bufffer)) != -1){
//读取到的数据,打印到控制台
//将 bufffer 中的字节(从索引 0 开始,长度为 bytesRead)转换为字符串。
String str = new String(bufffer,0,bytesRead);
System.out.println(str);
};
inputStream.close();
}
}