好比一个jpg从一个地方到另一个地用字节流来完成
计算机上所有的文件都是以字节来存储的
字节流其实可以读取任意文件
注意:要先从c盘将文件读取到内存中 FileInputStream read()方法
在写到D盘去 用FileOutputStream write()方法
文件复制练习:一读一写 明确 数据源: 数据的目的地: 文件复制的步骤: 1.创建一个字节输入流(对内存来说进入内存是输入)对象,构造方法中绑定要读取的数据源 2.创建一个字节输出流对象,构造方法种绑定要写入的目的地 3.使用字节输入流对象中的方法read读取文件 4.使用字节输出流中的方法write 把读取到的字节写入到数据的目的地 5.释放资源
package demo02;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/*
文件复制练习:一读一写
明确
数据源:
数据的目的地:
文件复制的步骤:
1.创建一个字节输入流(对内存来说进入内存是输入)对象,构造方法中绑定要读取的数据源
2.创建一个字节输出流对象,构造方法种绑定要写入的目的地
3.使用字节输入流对象中的方法read读取文件
4.使用字节输出流中的方法write 把读取到的字节写入到数据的目的地
5.释放资源
*/
public class Demo03CopyFile {
public static void main(String[] args) throws IOException {
// 1.创建一个字节输入流(对内存来说进入内存是输入)对象,构造方法中绑定要读取的数据源
FileInputStream fis = new FileInputStream("C:\\03_字节流读取文件的原理.bmp");
// 2.创建一个字节输出流对象,构造方法种绑定要写入的目的地
FileOutputStream fos = new FileOutputStream("d:\\1.bmp");
// 3.使用字节输入流对象中的方法read读取文件 2种方法
//一次读取一个字节写入一个字节的方式 这张图片可能几万个字节一个一个读一个一个写
/* int len = 0;
while ((len = fis.read()) != -1) {
//4.使用字节输出流中的方法write 把读取到的字节写入到数据的目的地
fos.write(len);
}*/
//使用数组缓冲进行多个字节的复制
byte[] bytes = new byte[1024];
int len = 0 ; //len返回的是每次读取字节的有效个数
while((len=fis.read(bytes))!=-1){
fos.write(len,0,len);
}
//5.释放资源 先关写的后关闭读的 因为写完一定读完了
fos.close();
fis.close();
}
}
注意len不只是返回2 返回的是每次读取的字节个数