JAVAIO编程——字节输入流

前言:InputStream是一个提供字节输入流的实现类

public abstract class InputStream
extends Object
implements Closeable
这个抽象类是表示输入字节流的所有类的超类。

在进行读取的时候是不会用到系统缓冲区的,也就是说为了防止过多的写入才会提供有写入缓冲区,写入的缓冲区才需要清空处理,所以InputStream不会实现Flushable接口

常用方法

public abstract int read()
                  throws IOException
从输入流读取数据的下一个字节。 值字节被返回作为int范围0255 。 如果没有字节可用,因为已经到达流的末尾,则返回值-1
public int read(byte[] b)
         throws IOException
从输入流读取一些字节数,并将它们存储到缓冲区b 。 实际读取的字节数作为整数返回。 如果没有字节可用,因为已经到达流的末尾,则返回值-1
public int read(byte[] b,
                int off,
                int len)
         throws IOException
从输入流读取len字节的数据到一个字节数组。 尝试读取多达len个字节,但可以读取较小的数字。 实际读取的字节数作为整数返回。
如果len为零,则不会读取字节并返回0 ; 否则,尝试读取至少一个字节。 如果没有字节可用,因为流是文件的-1则返回值-1 ; 否则,读取至少一个字节并存储到b 。

在这里插入图片描述

public class Test {
    public static void main(String[] args) throws IOException {
        //定义要进行输出的磁盘完成路径
        File file = new File("D:" + File.separator + "test-new.txt");
        if (file.exists()) {
            //实例化输入流对象
            InputStream fileInputStream = new FileInputStream(file);
            //开辟一个空间进行数据读取
            byte[] bytes = new byte[1024];
            //将输入流的内容读取到字节数组之中
            fileInputStream.read(bytes);
            System.out.println("[结果:"+new String(bytes)+"]");
            fileInputStream.close();
        }

    }
}

在这里插入图片描述
在这里插入图片描述
出现这样的原因是因为字节数组的空间太大,远超内容空间,因此可以读取输入的长度

public class Test {
    public static void main(String[] args) throws IOException {
        //定义要进行输出的磁盘完成路径
        File file = new File("D:" + File.separator + "test-new.txt");
        if (file.exists()) {
            //实例化输入流对象
            InputStream fileInputStream = new FileInputStream(file);
            //开辟一个空间进行数据读取
            byte[] bytes = new byte[1024];
            //将输入流的内容读取到字节数组之中
            int read = fileInputStream.read(bytes);
            System.out.println("[结果:"+new String(bytes,0,read)+"]");
            fileInputStream.close();
        }

    }
}

这样就解决啦

public int available()
              throws IOException
返回从此输入流中可以读取(或跳过)的剩余字节数的估计值,可用于判断文件大小。若文件大于5M尽量不要一次性读取
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值