IO流复制文件

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();
    }
}

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