Java中IO流-15-文件拷贝核心6行代码

       前面两篇,我们分别学习了read和write方法。知道如何读文件和如何写文件,那么,我们就知道如何拷贝文件。今天,我们就来写一个拷贝图片的代码,然后再写一个拷贝视频的代码,最后来分析下这种拷贝文件的缺点。


文件拷贝的核心6行代码

      这里说的是6行代码,待会会在代码中标注出来,真的,掌握了这6行核心代码,IO流的操作就算基本学会了,学好了。下面来一个图片拷贝例子,我桌面有一个test.png图片,现在我需要把这个图片拷贝到当前eclipse的java项目的根目录下,拷贝后图片名称为copy.png。

package io;

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

public class Demo3_CopyFile {

	public static void main(String[] args) throws IOException {
		//1.创建输入流对象
		FileInputStream fis = new FileInputStream("C:\\Users\\Administrator\\Desktop\\test.png");
		//2.创建输出流对象
		FileOutputStream fos = new FileOutputStream("copy.png");
		
		int b;
		//3.循环判断,不为-1就写入文件
		while ((b = fis.read()) != -1) {
			//4. 写入文件
			fos.write(b);
		}
		
		//5.关闭输入流
		fis.close();
		//6.关闭输出流
		fos.close();
	}

}

      运行之后,手动刷新Java项目根目录下,可以看到copy.png,而且右键这个图片,大小和桌面的图片也一样。下面来看看拷贝一个视频文件。我在桌面准备一个30多兆的mp4文件,同样方法拷贝到项目根目录。

package io;

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

public class Demo3_CopyFile {

	public static void main(String[] args) throws IOException {
		//1.创建输入流对象
		FileInputStream fis = new FileInputStream("C:\\Users\\Administrator\\Desktop\\test.mp4");
		//2.创建输出流对象
		FileOutputStream fos = new FileOutputStream("copy.mp4");
		
		int b;
		//3.循环判断,不为-1就写入文件
		while ((b = fis.read()) != -1) {
			//4. 写入文件
			fos.write(b);
		}
		
		//5.关闭输入流
		fis.close();
		//6.关闭输出流
		fos.close();
	}

}
       首先,我们只需要改文件路径和名称就行,代码都不动,这就是6行核心代码。开始运行之后,发现等了足足三分钟以后,我的控制台才结束拷贝。其实,原理我们都知道,读和写的方法都是采用一个字节一个字节读取。30M差不多有30*1024*1024这么多个字节,也就是说完成这个拷贝需要2倍的30*1024*1024次数,所以时间很长。这种拷贝速度,我们是不能接受的。所以,下一篇,我们讨论如何换一种方式提高拷贝速度。


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值