java字节流
字节输出流
java.io.OutputStream抽象类是表示字节输出流的所有类的超类,将指定的字节信息写出到目的地。它定义了字节输出流的基本共性功能方法。
- public void close(): 关闭此输出流并释放与此流相关联的任何系统资源。
- public void flush(): 刷新此输出流并强制任何缓冲的输出字节被写出。
- public void write(byte[] b): 将b.length字节从指定的字节数组写入此输出流。
- public void write(byte[] b, int off, int len): 从指定的字节数组写入len字节,从偏移量off开始输出到此输出流。
- public abstract void write(int b): 将指定的字节输出到此输出流

需要定义OutputStream子类的应用程序必须提供至少一种可写入一个输出字节的方法。
FileOutputStream
java.io.FileOutputStream extends OutputStream
FileOutputStream 是文件字节输出流,它的作用是:把内存中的数据写入到硬盘的文件中
构造方法:
- FileOutputStream(String name)创建一个向具有指定名称的文件中写入数据的输出文件流。
- FileOutputStream(File file) 创建一个向指定File对象表示的文件中写入数据的文件输出流。
- 参数:写入数据的目的地,name是一个路径,file是一个java中抽象的文件
- 构造方法的作用:
- 创建一个FileOutputStream对象
- 会根据构造方法中传递的文件/文件路径,创建一个空的文件
- 会把FileOutputStream对象指向创建好的文件。
1 | |

换行
如果是文本文件,适当地加上换行,才能有较高的可阅读性,但是换行对于不同的操作系统,又是不一致的
- windows:
"\r\n" - linux:
"/n" - mac:
"/r"
字节输入流
java.io.InputStream: 字节输入流
此抽象类是表示字节输入流的所有类的超类
定义了所有子类共性的方法:
- int read() : 从输入流中读取数据的下一个字节。
- int read(byte[] b):从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。
- void close():关闭此输出流并释放与该流关联的所有系统资源。
FileInputStream
java.io.FileInputStream extends InputStream
FileInputStream: 文件字节输入流
作用:把硬盘文件中的数据,读取到内存中使用
构造方法:
- FileInputStream(String name)
- FileInputStream(File file)
- 参数:读取文件的数据源,name为文件的路径,file是java中的文件对象
- 构造方法的作用:
- 会创建一个FileInputStream对象
- 会为FileInputStream对象指定要读取的文件
读取数据的原理(硬盘 –> 内存)
java程序 –> JVM –> OS –> OS读取数据的方法 –> 读取文件
字节输入流的使用步骤(重点):
- 创建FileInputStream对象,构造方法中绑定要读取的数据源
- 使用FileInputStream对象中的方法read,读取文件
- 释放资源
1 | |

一次读取多个字节
int read(byte[] b) :从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中
明确:
- 方法的参数byte[]的作用?
- 起到缓冲作用,存储每次读到的多个字节
- 数组的长度一般定义为1024(1kb)或者1024的整数倍
- 方法的返回值int是什么?
- 每次读取到的有效字节个数(少于或等于byte数组的长度,因为文件的长度不一定是数组长度的整数倍)
1 | |

文件复制综合案例
1 | |

java字节流
https://blog.wangxk.cc/2020/10/01/java字节流/