文件拷贝
一、直接拷贝
首先在当前项目目录下创建文件夹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(); } }
三、效果比较
这是直接拷贝的时间
这是缓冲区拷贝的时间