Java之输入流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();

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹意雅韵(马)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值