【Java】文件的拷贝(直接拷贝,借助缓冲区拷贝)完整代码实现

文件拷贝

  • 一、直接拷贝
  • 二、通过缓冲区拷贝
  • 三、效果比较
      • 这是直接拷贝的时间
      • 这是缓冲区拷贝的时间

一、直接拷贝

首先在当前项目目录下创建文件夹source和target,然后在source文件下放入一个mp3或者视频文件。通过输入输出流直接拷贝文件。

package IO;

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

//文件拷贝

public class File_copy_test {
	public static void main(String[] args) throws IOException {
		
		//1.打开字节输入流,用于读取“源文件”下的mp3文件
		//  打开字节输出流,将读取的数据写入另一个文件下
		InputStream in = new FileInputStream("源文件\\兄弟无数.mp3");
		OutputStream out = new FileOutputStream("源文件副本\\兄弟无数.mp3");
		
		//2.定义一个变量,记住每一个读取的字节
		int len;
		
		//3.获取拷贝文件前系统时间
		long beginTime = System.currentTimeMillis();
		
		//4.读取字节,判断是否到达文件末尾
		while((len = in.read()) != -1) {
			out.write(len);//写入文件
		}
		//5.获取文件拷贝结束时间并输出
		long endTime = System.currentTimeMillis();
		System.out.println("拷贝文件所消耗的时间为:"+(endTime - beginTime)+"毫秒");
		
		//6.关闭输入输出流
		in.close();
		out.close();
	}
}

二、通过缓冲区拷贝

相当于建立一个车厢,一次运输多个字节,即定义一个字节数组当做车厢,也就是缓冲区,其他操作和直接拷贝完全相同。

package IO;

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

//字节流缓存区

public class File_HuanChongQu_text {
	public static void main(String[] args) throws IOException {
		
		//1.创建一个字节输入流,读取“源文件”的mp3文件
		InputStream in = new FileInputStream("源文件\\兄弟无数.mp3");
		
		//2.创建一个字节输出流,写入到“源文件副本”文件中
		OutputStream out = new FileOutputStream("源文件副本\\兄弟无数.mp3");
		
		//3.缓冲区读取文件(定义一个字节数组,左缓冲区)
		byte buff[] = new byte[1024];
		
		//4.定义变量记住当前读入缓冲区的字节数
		int len;
		long beginTime = System.currentTimeMillis();
		
		//5.判断是否读到文件末尾
		while((len = in.read(buff)) != -1) {
			out.write(buff,0,len);//从第一个字节写入len个字节
		}
		
		long endTime = System.currentTimeMillis();
		System.out.println("通过缓冲区拷贝文件所消耗的时间为:"+(endTime - beginTime)+"毫秒");
		
		//6.关闭流
		in.close();
		out.close();
	}
}

三、效果比较

这是直接拷贝的时间

【Java】文件的拷贝(直接拷贝,借助缓冲区拷贝)完整代码实现_第1张图片

这是缓冲区拷贝的时间

【Java】文件的拷贝(直接拷贝,借助缓冲区拷贝)完整代码实现_第2张图片

你可能感兴趣的:(Java,java)