Java递归遍历删除拷贝文件以及获取文件夹大小

来源:互联网 发布:java ocr身份证识别 编辑:程序博客网 时间:2024/04/20 08:12
package com.fwd.digui;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.Scanner;public class copyFile{public static void main(String[] args) throws IOException {System.out.println("输入要复制的文件夹");File src = getDir();System.out.println("输入要复制到目标目录");File dest = getDir();if (src.equals(dest)) {System.out.println("目标文件是原文件夹");}else{copy(src,dest);}}/** * 统计文件的大小长度 * @param dir * @return */public static long getFileLength(File dir) {//定义一个求和变量long length = 0;File[] files = dir.listFiles(); //获取该路径下的所有文件夹以及文件 listFiles();for (File file : files) {if (file.isFile()) {length += file.length();}else{length = length+getFileLength(file);}}return length;}/** * 递归删除文件夹,以及文件 * @param dir */private static void deleteFile(File dir) {File[] list = dir.listFiles(); //获取目标文件夹下所有的文件和文件夹数组for (File subFiles : list) {//遍历if (subFiles.isFile()) {//判断subFiles.delete(); //是文件就删除}else{deleteFile(subFiles); //是文件夹就遍历}}dir.delete();}/** * 文件复制 * @param src 原文件夹 * @param dest 目标文件夹 * @throws IOException */private static void copy(File src, File dest) throws IOException {//在目标文件夹中创建源文件夹File newDir = new File(dest,src.getName());newDir.mkdir();//遍历目标文件夹,获取目标文件夹中的文件以及文件夹File[] subFiles = src.listFiles(); //获取目标文件夹下的所有文件夹以及文件,返回的是一个File的数组for (File subFile : subFiles) {//遍历数组if (subFile.isFile()) {//判断是文件,就用IO流读取BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile));//将读取的文件用IO流写到要复制到目标文件BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(newDir,subFile.getName())));int len;while((len = bis.read())!=-1){bos.write(len);}bis.close();//关流bos.close();}else{//否则是是文件夹就调用递归copy(subFile, newDir); //遍历是文件夹就是根目录 ,目标就是新创建的newDir}}}/** * 获取文件夹路径 * @return  */private static File getDir() {Scanner sc = new Scanner(System.in);while(true){String line = sc.nextLine();File dir = new File(line);if (!dir.exists()) {System.out.println("文件夹路径不存在");}else if(dir.isFile()){System.out.println("输入的路径是文件");}else{return dir;}}}}

1 0
原创粉丝点击