阿里Java学习路线:阶段 1:Java语言基础-Java语言高级特性:第16章:字节流与字符流:课时74:InputStream字节输入流

InputStream字节输入流

与OutputStream类对应的一个流就是字节输入流,InputStream类主要实现的就是字节数据读取,该类定义如下:
public abstract class InputStream implements Closeable
在InputStream类中定义有如下的几个核心方法:

No.方法名称类型
1public abstract int read() throws IOException普通读取单个字节数据,如果数据已经读取到底了,返回-1
2public int read(byte[] b) throws IOException普通读取一组字节数据,返回的是读取的个数,如果没有数据已经读取到底则返回-1
3public int read(byte b[], int off, int len) throws IOException普通读取一组字节数据(只占数组的部分)

在这里插入图片描述
在这里插入图片描述
InputStream类属于抽象类,这时应该依靠他的子类来实例化对象,如果要从文件读取一定使用FileInputStream子类,对于子类而言只关心父类对象实例化,构造方法:public FileInputStream​(File file) throws FileNotFoundException
在这里插入图片描述

范例:读取数据

package cn.mldn.demo;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
    	File file = new File("D:" + File.separator + "hello" + File.separator + "mldn.txt") ;
    	InputStream input = new FileInputStream(file);
    	byte data [] = new byte [1024] ; // 开辟一个缓冲区读取数据
    	int len = input.read(data); // 读取数据,数据全部保存在字节数组之中,返回读取个数
    	System.out.println("【" + new String(data, 0 , len) + "】");
    	input.close();
    }
}

对于字节输入流来说,最为麻烦的问题就在于:使用Read方法读取的时候,只能以字节数据为主进行接收
特别需要注意的是从JDK1.9开始在InputStream类中增加了一个新方法:public byte[] readAllBytes() throws IOException;

范例:新方法

package cn.mldn.demo;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
    	File file = new File("D:" + File.separator + "hello" + File.separator + "mldn.txt") ;
    	InputStream input = new FileInputStream(file);
    	byte data [] = input.readAllBytes(); // 读取全部数据
    	System.out.println("【" + new String(data) + "】");
    	input.close();
    }
}

如果你现在要读取的内容很大,那么这种读取直接搞死你的程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值