目录
一、什么是流?
我们知道,计算机中的文件都有最小组成单元,这些最小单元无非是字节或字符,而我们知道,在Java程序中如果我们想实现一个文件的传输,必须先将文件拆分成小的组成单元,而传输的过程无非就是这些最小单元的流动,这些流动的最小单元就构成了“流”。站在Java程序的角度看,有输入和输出端,所以就有输入流和输出流:
当然,这里的传输宏观上来看实际上为拷贝,输入流用来读取,输出流用于拷贝写入。
二、Java中的流
(1)IO流
a、字节流
首先,要传输文件根据流的定义,我们知道,我们需要三样东西:用于读取的输入流,用于储存数据的搬运工,,用于写入数据的输出流。
输入流常用方法:
InputStream抽象类是所有输入字节流类的直接或间接父类,FileInputStream是其重要子类:
FileInputStream常用构造方法:
①FileInputStream(File file) :通过File对象创建FileInputStream对象。
②FileInputStream(String name) :通过文件(非“目录”)路径创建FileInputStream对象。
FileInputStream常用方法:
①int read():从输入流中读取单个字节的数据;如果已到达文件末尾,则返回 -1。
②int read(byte[] b):从输入流中将最多b.length个字节的数据读入一个byte数组中,以整数形式返回存入数组中的实际字节个数;如果已到达文件末尾,则返回 -1。(车)
③void close():关闭此文件输入流并释放与此流有关的所有系统资源。
输出流常用方法:
InputStream抽象类是所有输入字节流类的直接或间接父类,FileInputStream是其重要子类:
FileInputStream常用构造方法:
①FileInputStream(File file) :通过File对象创建FileInputStream对象。
②FileInputStream(String name) :通过文件(非“目录”)路径创建FileInputStream对象。
FileInputStream常用方法:
①int read():从输入流中读取单个字节的数据;如果已到达文件末尾,则返回 -1。
②int read(byte[] b):从输入流中将最多b.length个字节的数据读入一个byte数组中,以整数形式返回存入数组中的实际字节个数;如果已到达文件末尾,则返回 -1。
③void close():关闭此文件输入流并释放与此流有关的所有系统资源。
接下来看代码:
1>逐个读取
package venus;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class IO {
public static void main(String[] args) {
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
try {
fileInputStream = new FileInputStream("D:\\Origami\\折纸自然研究-From Tosummerny.pdf");//定义输入流源头,FileInputStream类对象中传入的不一定是一个路径,也可以是一个File类对象
fileOutputStream = new FileOutputStream("C:\\Users\\15298\\Desktop\\折纸自然研究-From Tosummerny.pdf");//定义输出流目的地
int data = 0;//定义“字节搬运工”
while((data = fileInputStream.read())!=-1){//当读取结束时,read()方法返回-1
fileOutputStream.write(data);//输入流将“字节搬运工”搬运的字节逐个写入目的文件
}
fileOutputStream.flush();
} catch (Except