该实例 用到的为 递归 和迭代。
递归:程序调用自身。在下面的实例中两种方法都用到的递归。
迭代:重复执行小段代码。下面使用的是增强for循环进行迭代。
场景如下:
如图,由于文件夹并没有标明里边具体内容,我想查找里边的资料非常不方便
于是我写了一个小程序,实现了将里边的内容取出,并把这些文件夹删除。
下面是程序执行后的结果。
下面贴源码,主要用到的就是递归和 迭代。
/*
*该方法实现的是将文件中的所有文件取出并按原文件名放到指定路径下。
*/
public static void removeFile(String path,String pathTo){
File file = new File(path);
if(file.isDirectory()){
File[] fs = file.listFiles();
if(fs!=null){
for(File fileChild:fs){
String pathChild = null;
try {
pathChild = fileChild.getCanonicalPath();
} catch (IOException e) {
e.printStackTrace();
}
removeFile(pathChild,pathTo);
}
}
}else{
String name = file.getName();
File fileFrom = new File(path);
File fileTo = new File(pathTo+"\\"+name);
fileFrom.renameTo(fileTo);
}
}
删除文件夹(可删除多级文件夹)
/*
* 该方法将路径下的所有文件夹删除。
*/
public static void deleteDir(String path){
File file = new File(path);
File[] fs = file.listFiles();
for(File f : fs){
if(f.isDirectory()){
String pathChild = f.getAbsolutePath();
deleteDir(pathChild);
}
}
file.delete();
}
测试入口
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("输入文件所在路径:");
String path = scan.nextLine();
System.out.println("输入目的路径");
String pathTo = scan.nextLine();
scan.close();
removeFile(path,pathTo);
deleteDir(path);
}