java 文件夹及其子目录 子文件的复制

来源:互联网 发布:linux c mmap 编辑:程序博客网 时间:2024/06/04 20:24

package test815.night;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;

public class FileTest {
private static boolean flag = false;

public static void main(String[] args) {    // TODO Auto-generated method stub    String path = null;// "D:\\t";//要复制的文件夹    String path2 = null;// "D:\\tt";    String info = "请输入您要复制的文件的路径: 如【D:\\t  如果不输入盘符  ,则默认当前目录】";    path = inputPath(info);    String info2 = "请输入您要粘贴的文件的路径: 如【D:\\tt  如果不输入盘符  ,则默认当前目录】";    path2 = inputPath(info2);    System.out.println("开始复制,请稍等……");    isFile(path, path2);    if (flag) {        System.out.println("复制完毕end");    } else {        System.out.println("复制失败end");    }}public static String inputPath(String info) {    System.out.println(info);    Scanner sc = new Scanner(System.in);    String pathString = sc.nextLine();    return pathString;}// 对原路径进行判断public static void isFile(String path, String path2) {    File file = new File(path);// 获取path地址对应的文件    if (file.exists()) {        File newpathFile = new File(path2);// 建立新的路径文件        newpathFile.mkdir();        String[] str = file.list();// 获得该文件下的子文件和子目录的名称        // System.out.println(str.length);        System.out.println(path + "    中原有文件为: " + Arrays.toString(str));        for (String string : str) {// 遍历            String oldpath = path + "\\" + string;// 组合新的路径            String newpath = path2 + "\\" + string;// 对应的新文件夹 组合路径            File oldFile = new File(oldpath);// 取得对应的文件            if (oldFile.isDirectory()) {// 判断是否为目录                File newFile = new File(newpath);// 在对应的新路径下建立文件夹                newFile.mkdir();                isFile(oldpath, newpath);// 递归 进入到子文件夹内            } else {                copy(oldpath, newpath);// 如果是文档,则开始复制            }        }    } else {        System.out.println(path + "   原始路径有误!");    }}public static void copy(String path, String path2) {    flag = false;    FileInputStream fis = null;    FileOutputStream fos = null;    byte[] bs = new byte[2048];    BufferedInputStream bis = null;    BufferedOutputStream bos = null;    try {        fis = new FileInputStream(path);        fos = new FileOutputStream(path2);        bis = new BufferedInputStream(fis);        bos = new BufferedOutputStream(fos);        int x = bis.read(bs);        while (x != -1) {            bos.write(bs, 0, x);            x = bis.read(bs);        }        bos.flush();    } catch (FileNotFoundException e) {        // TODO Auto-generated catch block        e.printStackTrace();    } catch (IOException e) {        // TODO Auto-generated catch block        e.printStackTrace();    } finally {        if (bis != null) {            try {                bis.close();            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }        if (fis != null) {            try {                fis.close();            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }        if (bos != null) {            try {                bos.close();            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }        if (fos != null) {            try {                fos.close();            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }        flag = true;    }}

}

0 0
原创粉丝点击