流的概述:
什么是流?
流是一组有序的数据序列,将数据从一个地方带到另一个地方。
流的特点:
流是一维的,流是单向的,对应的操作就是单向读取和单向写入。
java IO 流可以概括为“两个对应,一个桥梁”:
两个对应指字节流和字符流的对应,输入流和输出流的对应;
一个桥梁是指字节流到字符流的桥梁;
分别由以下4个抽象类来表示流:
InputStream
OutputStream
Reader
Writer
java中的字节流根据流向的不同,可以分为输入流和输出流;
字节输入流的父类是 InputStream,它是一个抽象类;
字节输出流的父类是 OutputStream,它也是一个抽象类;
字节流可以处理所有文件类型的数据(图片,视频,文本…)
抽象类必然需要它的子类的实现;
如图所示:
下面内容是这四个抽象类的基本使用和介绍:
一.字节流-FileInputStream
FileInputStream:
该流用于从文件读取数据,它的对象可以用关键字new来创建。有多种构造方法可用来创建对象;
1、可以使用字符串类型的文件名来创建一个输入流对象来读取文件:
FileInputStream f=new FileInputStream("D:/SSS/xs.txt");
2.使用一个文件对象来创建一个输入流对象来读取文件:
File f=new File("D:/SSS/xs.txt");
FileInputStream a2= new FileInputStream(f);
FileInputStream字节输入流常用的方法:
方法名称 | 方法描述 |
---|---|
public int read() throws IOException{} | 从FileInputStream对象读取1个字节的数据,返回值即为读取的数据,如果返回-1则代表读取到文件的结尾; |
public int read(Byte b[]) throws IOException{} | 从FileInputStream对象读取b.length个字节的数据,并存入字节数组b中,,返回值为读取字节数量,如果返回-1 则代表已经读取到文件的结尾; |
public int read(Byte b[] , int off, int len) throws IOException{} | 从FileInputStream对象读取指定len个字节的数据,并从字节数组b的off位置存入字节数组b中,返回值为读取字节数量,如果返回-1 则代表已经读取到文件的结尾; |
public void close() throws IOException{} | 关闭此文件输入流并释放与此流有关的所有系统资源。抛出IOException异常; |
代码演示:
读取一个TXT文本中的所有内容
public static void main(String[] args) {
FileInputStream f =null;
//用字符串类型的文件名构建一个FileInputStream
try {
f=new FileInputStream("D:/sss/xs.txt");
byte[] b=new byte[1024]; //每次读取1024字节的数据
int n= -1;
String str="";
while ((n = f.read(b))> -1) {
//括号优先级,先给n赋值再进行比较
str = new String(b,0,n); //字符串接收
System.out.println(str); //输出
}
}catch (FileNotFoundException e) {
System.err.println("找不到这个文件");
}catch (IOException e) {
System.err.println("读取文件出现问题");
}finally {
//关闭流
try {
f.close();
} catch (IOException e) {