java中的io流------文件以字节流的形式拷贝

时间:2021-10-25 21:36:50

最近学习到了java流然后写了一个小程序,通过字节流来拷贝一个文件。

先贴上源码:

 

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class InputOutPutSteamDemo {

	public static void main(String[] args) throws Exception {
		
		//文件的拷贝
		
		FileInputStream fis = new FileInputStream("d://20170620.rar");
		FileOutputStream fos = new FileOutputStream("e://20170620_copy.rar");
		//设置一个缓存数组可以一次读取多个字节,提高了效率
		byte[] buffer = new byte[1024];
		int length = 0;
          //这个可以有多种读入和写入字节的方式,可以自己选择 while((length=fis.read(buffer))!=-1) { fos.write(buffer,0,length); fos.flush(); } fos.close(); fis.close(); } }

首先通过new一个FileInputStream来读取出要拷贝的文件的字节流,然后通过FileOutputStream输出流也就是写入流来确定具体要写入到哪个文件中去
(这里声明如果要写入的文件不存在,会自动在指定位置上创建出指定的文件。)
然后就是普通的读字节和写字节了(这里是通过判断读取到的字节数是否为-1,当读到的字节数为-1时,就意味着已经读到文件末尾,即退出循环)
(然后在往流里写入字节的时候要注意使用三个参数的那个方法,因为当文件大于你设置的缓冲数组时,就肯定要读取多次,到最后一次有可能会填不满缓冲数组,
也就是数组中的后面部分数据未被覆盖如果直接写入整个数组的话,会导致文件拷贝出错,所以要使用有偏移量的那个方法,最后一次我读到了多少个字节我就写入多少个字节。)