容器与文件操作(四)文件的拷贝

上次说了文件的读和写操作,文件拷贝其实就是把文件的读和写结合起来。其实现基本思想还是以程序为桥梁,一边不断的从src文件中读取数据流,同时写出到指定的dest文件中。前面说过,字节流可以处理一切格式的文件,可以把字符流看做字节流的特例,在进行处理时用read()和write()方法以及char[]数组进行读取和写出即可,其他部分是一样的。这里以字节流为例将文件的拷贝分为下面4个步骤:
1、建立联系
 依程序为中心,用File对象建立源头文件(src)和目的地文件(dest)的联系,注意src必须存在且为文件,这里可以加一个判断;
2、选择流:文件输入流 InputStream FileInputStream
    文件输出流 OutputStream FileOutputStream
3、操作:进行文件的拷贝,这里又分为两部分:读取和写出。不同于前面单独进行读写的时候,是将读到的内容打印在控制台,或者是将程序中的String写入到指定文件中,这里两个是同时进行操作的,即:程序将src读到的内容不断写出到指定文件中。注意有可能最后一部分输出流没有被读取到,这里我们使用方法flush(),它的作用是刷新此输出流并强制写出所有缓冲的输出字节。

4、释放资源:关闭两个流,这里注意为了确保所有字节都被读取到,我们一般默认先打开的流后关闭,即:先关闭输出流再关闭输入流。下面是我写的文件拷贝代码:

	/**
	 * 文件的拷贝
	 * @param 源文件路径
	 * @param 目录文件路径
	 * @throws FileNotFoundException,IOException
	 * @return
	 */
	public static void copyFile(String srcPath,String destPath) throws FileNotFoundException,IOException {
		//1、建立联系 源(存在且为文件)+目的地(文件可以不存在)
		File src=new File(srcPath);
		File dest=new File(destPath);
		
		if(!src.isFile()){//不是文件或者为null
			System.out.println("只能拷贝文件");
			throw new IOException("只能拷贝文件");
		}
		
		//2、选择流
		InputStream is=new FileInputStream(src);
		OutputStream os=new FileOutputStream(dest);
		
		//3、文件的拷贝 循环+读取+写出
		byte[] flush=new byte[1024];
		int len=0;
		
		//读取
		while(-1!=(len=is.read(flush))){
			//写出
			os.write(flush, 0, len);
		}
		os.flush();//强制刷出
		
		//关闭流:先打开的后关闭
		os.close();
		is.close();
		
	}
最后在主方法中声明两个文件即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值