我要创建目录,目录不能重复。比如第一次创建目录“新文件夹“,第二次如果创建”新文件夹“,会自动保存为”新文件夹(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; }}