日期:2014-05-20  浏览次数:20793 次

求助一个java递归操作。
我要创建目录,目录不能重复。比如第一次创建目录“新文件夹“,第二次如果创建”新文件夹“,会自动保存为”新文件夹(1)“,如果第三次创建”新文件夹“,会自动保存”新文件夹(2)“,以此类推;
这个算法如何实现



------解决方案--------------------
Java code
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;


public class Test {
    public static void main(String[] args) throws ParseException, IOException {
        createFile("新建文件");
        createFile("新建文件");
        createFile("新建文件");
        createFile("新建文件");
        createFile("新建文件");
    }
    
    public static void createFile(String path) throws IOException{
        createFile(new File(path));
    }
    
    public static void createFile(File file) throws IOException{
        String path = file.getPath();
        int i = 1;
        while(true){
            if(!file.exists()){
                file.createNewFile();
                break;
            }else{
                file = new File(path + "(" + i + ")");
                i++;
            }
        }
    }
}

------解决方案--------------------
Java code

import java.io.File;

public class Test5 {

    /**
     * @param args
     */
    public static void main(String[] args) {

        File file = new File("D:\\AA");
        if (!file.exists()) {
            file.mkdirs();
        }

        int index = 0;
        String name;
        while (index < 100) {
            name = getNewFolderName("D:\\AA");
            file = new File("D:\\AA\\" + name);
            file.mkdirs();
            index++ ;
        }
        System.out.println("创建完成");

    }

    /**
     * 根据穿进去的路径得到新建目录的目录名
     * @param path 路径
     * @return
     */
    public static String getNewFolderName(String path) {
        String sIdx = "";
        File dir = new File("D:\\AA");
        File[] files = dir.listFiles();
        File file = null;
        String name = "新建文件夹"; //先找出是否有 "新建文件夹" 这个目录,如果有则设置name为"" ;
        for (int i = 0; i < files.length; i++) {
            file = files[i];
            if (file.isDirectory() && (name).equals(file.getName())) {
                name = "";
                break;
            }
        }
        //判断name是否为"",即判断"新建文件夹",是否存在,如果存在,则逐个判断 "新建文件夹" + i,如果不存在,则返回创建
        if ("".equals(name)) {
            for (int i = 1; i <= files.length; i++) {
                name = "新建文件夹" + i;
                for (int j = 0; j < files.length; j++) {
                    file = files[j];
                    if (file.isDirectory() && (name).equals(file.getName())) {
                        name = "";
                        break;
                    }
                    if (j == files.length) {
                        break;
                    }
                }
                if (!"".equals(name)) {
                    break;
                }
            }
        }

        return name;
    }



}