Copiar los archivos de Java pequeña práctica

Requisitos: la carpeta del disco E aaa todo el contenido (incluyendo aaa carpeta) copiado en el disco F
realización de las ideas:

  • El archivo de la carpeta que contiene el disco aaa ruta E es un objeto File
  • Crear una función de copia, archivo de parámetros de función como un objeto File
  • En la función de copia
    • El primer paso: parámetro juicio ruta del archivo si existe en el segundo paso, la salida no existe
    • Paso 2: Método de Uso getPath () para obtener la ruta del archivo de parámetros, y sustituir la ruta de disco F, y luego empaquetados en un Archivo Destino objeto File
    • El tercer paso: determinar si la ruta es una carpeta de archivos en el extremo
    • Paso cuatro: Si es así, llegar desde todas las subcarpetas (incluyendo carpetas) y transversal, que atraviesa el Archivo Destino para crear la carpeta y, a continuación, copiar una función recursiva
    • Paso cinco: Si no es así, que el final del archivo, el archivo se lee y se copia en el directorio consiga f disco correspondiente
  • código específico de la siguiente manera:
import java.io.*;

public class CopyDemo {
    public static void main(String[] args) throws Exception {
        long start = System.currentTimeMillis();
        String path = "E:/aaa";//文件夹(绝对)路径
        File file = new File(path);
        copyFile(file);
        long end = System.currentTimeMillis();
        System.out.println("复制共耗时:"+(end-start)+"毫秒");

    }

    private static void copyFile(File file) throws Exception {
        //判断file对象的文件路径是否存在
        if(file.exists()){
            //F盘文件路径,File对象无论路径存在与否都可以创建
            File destFile = new File(file.getPath().replace("E:","F:"));

            if(file.isDirectory()){
                //file路径是文件夹结尾
                File[] files = file.listFiles();//file的子文件
                // 因为file是文件夹结尾才进入此for循环,所以此处destFile也是文件夹结尾
                for (File f :
                        files) {
                    if(!destFile.exists()){

                        //目标文件夹不存在则创建
                        destFile.mkdir();
                    }
                    copyFile(f);//递归
                }
            }else{
                //file路径是文件结尾,那么destFile路径也是文件结尾

                //读取文件对象
                InputStream is = new FileInputStream(file);

                //写入文件对象
                OutputStream os = new FileOutputStream(destFile);//destFile路径文件不存在会自动创建

                int len;//读取的有效字节个数
                byte[] b = new byte[1024];
                while ((len=is.read()) != -1){
                    //读取操作返回值为-1则说明读取完毕
                    os.write(len);//写入数据
                }
                is.close();//关闭写入
                os.close();//关闭读取
            }
        }else{
            System.out.println(file.getPath()+"不存在");
        }
    }
}
Publicado 95 artículos originales · ganado elogios 43 · Vistas a 70000 +

Supongo que te gusta

Origin blog.csdn.net/lyxuefeng/article/details/92788144
Recomendado
Clasificación