上一篇:使用FileOutputStream将数据写入文件 | 带你学《Java语言高级特性》之五十三
上一节中我们学习了字节输出流OutputStream,与之对应的还有字节输入流InputStream,本节将为读者详细介绍字节输入流相关内容与使用FileInputStream读取文件内容。
【本节目标】
通过阅读本节内容,你将了解InputStream接口相关的内容,通过几组示例图直观深刻地理解字节输入流的工作原理,学会使用FileInputStream读取文件内容。
InputStream字节输入流
与OutputStream对应的一个流就是字节输入流,InputStream类主要实现的就是字节数据读取,该类定义如下:
public abstract class InputStream extends Object implements Closeable
在InputStream类中定义有如下几个核心方法:
No | 方法 | 类型 | 描述 |
---|---|---|---|
01 | public abstract int read() throws IOException | 普通 | 读取单个字节数据,如果现在已经读取到底了,返回-1 |
02 | public int read(byte[] b) throws IOException | 普通 | 读取一组字节数据,返回的是读取的个数,如果数据已经读取到底了则返回-1 |
03 | public int read(byte[] b, int off, int len) throws IOException | 普通 | 读取一组字节数据(只占数组的部分) |
输入,读取单个字节数据
输入(int read(byte data[]))读取一组字节数据
InputStream类属于一个抽象类,这时应该依靠它的子类来实例化对象,如果要从文件读取一定使用FileInputStream子类,对于子类而言只关心父类对象实例化,构造方法:public FileInputStream(File file) throws FileNotFoundException;
InputStream
范例:读取文件数据
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;
范例:新方法
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();
}
}
如果你现在要读取的内容很大很大的时候,那么这种读取会直接将程序崩溃。
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学