1.输入你想复制的文件的地址
2.输入你想把该文件复制到的目的地
3.选择你想用的复制方法
import java.io.*;
import java.util.Scanner;
public class BufferStreamDemo02 {
public static void main(String[] args) throws IOException{
//startDressName D:\itcast\字节流复制图片.avi
//closeDressName 输入输出流\字节流复制图片.avi
Scanner sc=new Scanner(System.in);
System.out.println("请输入你想要复制的文件的地址");
String startDressName=sc.nextLine();
System.out.println("请输入该文件复制到的地址");
String closeDressName=sc.nextLine();
menu();
System.out.println("请输入你想要复制的文件方式");
int choice=sc.nextInt();
switch (choice){
case 1:
long startTime1 = System.currentTimeMillis();
copy1(startDressName,closeDressName);
long closeTime1 = System.currentTimeMillis();
System.out.println("字节流复制(一次复制一个字节)复制该文件总共耗时"+(closeTime1-startTime1)+"毫秒");
break;
case 2:
long startTime2 = System.currentTimeMillis();
copy2(startDressName,closeDressName);
long closeTime2 = System.currentTimeMillis();
System.out.println("字节流复制(一次复制一个字节数组)复制该文件总共耗时"+(closeTime2-startTime2)+"毫秒");
break;
case 3:
long startTime3 = System.currentTimeMillis();
copy3(startDressName,closeDressName);
long closeTime3 = System.currentTimeMillis();
System.out.println("字符缓冲流复制(一次复制一个字节)复制该文件总共耗时"+(closeTime3-startTime3)+"毫秒");
break;
case 4:
long startTime4 = System.currentTimeMillis();
copy4(startDressName,closeDressName);
long closeTime4 = System.currentTimeMillis();
System.out.println("字符缓冲流复制(一次复制一个字节数组)复制该文件总共耗时"+(closeTime4-startTime4)+"毫秒");
break;
default:
System.out.println("你的选择有误请重新选择");
}
}
public static void menu(){
System.out.println("请选择你想要用的复制方式");
System.out.println("1.字节流复制(一次复制一个字节)");
System.out.println("2.字节流复制(一次复制一个字节数组)");
System.out.println("3.字符缓冲流复制(一次复制一个字节)");
System.out.println("4.字符缓冲流复制(一次复制一个字节数组)");
}
public static void copy1(String startDressName,String closeDressName)throws IOException {//字节流一次读取一个字节
//创建一个字节输入流对象,读取数据
FileInputStream fis=new FileInputStream(startDressName);
//创建一个字节输出流对象,读取数据
FileOutputStream fos=new FileOutputStream(closeDressName);
//一次复制一个字节
int by;
while ((by=fis.read())!=-1){
fos.write(by);
}
fis.close();
fos.close();
}
public static void copy2(String startDressName,String closeDressName)throws IOException{//一次复制一个字节数组
//创建字符输入流读取数据
FileInputStream fis=new FileInputStream(startDressName);
//创建字节输出流写数据
FileOutputStream fos=new FileOutputStream(closeDressName);
//一次复制一个字节数组
byte []bys=new byte[1024];
int len;
while((len=fis.read(bys))!=-1){
fos.write(bys);
}
fos.close();
fis.close();
}
public static void copy3(String startDressName,String closeDressName)throws IOException{//字节缓冲输入流复制,一次读取一个字节
//创建字节缓冲输入流读取数据
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(startDressName));
//创建字节缓冲输出流写数据
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(closeDressName));
//一次复制一个字节
int by;
while ((by=bis.read())!=-1){
bos.write(by);
}
bis.close();
bos.close();
}
public static void copy4(String startDressName,String closeDressName)throws IOException{//字符缓冲流复制文件,一次复制一个字节数组,复制该文件总共耗时59毫秒
//创建字节缓冲输入流读取数据
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(startDressName));
//创建字节缓冲输出流写数据
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(closeDressName));
//一次复制一个字节数组
byte[]bys=new byte[1024];
int len;
while ((len= bis.read(bys))!=-1){
bos.write(bys);
}
bis.close();
bos.close();
}
}