Io即 Input输入流和Output输出流

是java中实现输入输出的基础,它可以方便的实现数据的输入和输出

分类:

字节流和字符流

根据流操作的数据单位的不同可以分为字节流和字符流

输入流和输出流

根据流传输方向的不同,又可以分为输入流和输出流

节点流和处理六

根据流的功能不同,可以分为节点流和处理六

 

 字节流

io流中针对字节的输入和输出提供了一系列的流,统称为字节流

字节流是程序中最常用的流

在jdk中,所有的字节输入流都继承自InputStream所有的字节输出流都继承自OutPutStream

inputstream被看成一个输入管道,outputstream被看成一个输出管道,数据通过inputstream从原设备输入到程序,通过outputstream从程序输出到目标设备,从而实现数据的传输

inputstream的常用方法:

int read() 从输入流读取一个字节,把他转换为整数,并返回这一整数,如果没有可用的字节返回-1

intread(byte[] b) 从输入流读取若干字节,把他们保存到参数b指定的字节数组中,并返回整数表示读取字节的数目

void close() 关闭此输入流与该流关联的所有系统资源

read方法都是用来读数据的,进行io看流操作时应该调用close方法关闭流,释放资源

OutPutstream的常用方法

void  write(int b) 想输入流写入一个字节

void write(byte[] b) 把参数b指定的字节数组的所有字节写到输出流

void close() 关闭此输入流与该流关联的所有系统资源

write是用来写数据的

 字节流读写文件

在操作文件是从一个文件中去读数据并将数据写入到另一个文件,这一过程就是文件的读写

针对文件的读写操作,JDK专门提供了两个类,分别是FileInputStream和FileOutputStream。FileInputStream是InputStream的子类,它是操作文件的字节输入流,专门用于读取文件中的数据。从文件读取数据是重复的操作,因此需要通过循环语句来实现数据的持续读取。

 

字节流的缓冲区:

定义一个字节数组缓冲区

public static void main(String[] args) throws IOException {
FileInputStream fileInputStream = new FileInputStream("a.txt");
FileOutputStream fileOutputStream = new FileOutputStream("b.txt");

byte[] bytes = new byte[1024];

int len;

while((len = fileInputStream.read(bytes))!=-1){
fileOutputStream.write(bytes,0,len);
}
fileInputStream.close();
fileOutputStream.close();
}

从比较运行结果可以看出拷贝文件所消耗的时间明显减少了很多,这说明使用缓冲区读写文件可以有效的提高程序的传输效率。

创建字节缓冲区长度随意,建议1024整数位,它的效率会更高一点。

read方法如果传入了数组,那么会根据数组容器大小,决定一次读取多少字节。

read方法返回值:读取到的(有效)字节个数。

字接缓冲流

 

除了定义字节缓冲区来提高文件拷贝效率外,IO中还提供了两个字节缓冲流来提高文件拷贝效率:BufferedInputStreamBufferedOutputStream。它们的构造方法中分别接收InputStreamOutputStream类型的参数作为对象,在读写数据时提供缓冲功能

 

 

这两个流都定义一个大小为8192的字节数组,当调用read()write()方法读写数据时,首先将读写的数据存入到定义好的字节数组,然后将字节数组的数据一次性读写到文件中,这种方式与定义缓冲区类似,都对数据进行了缓冲,从而有效地提高了数据的读写效率。

 

posted @ 2022-06-12 13:30  我滴妈老弟  阅读(98)  评论(0编辑  收藏  举报