09standy225aaabdCdjDgDABBfaahFaagbaaaEaahFaaeAaadaaafhaacAaacfaadBaahaaaahaaaeaaeFaadhaafcaafhaacdaafiaacDaahdaahaaahh
java题:
输入:
1:文件路径:String类型,指定的目标文件路径,
2:排序方法:boolean类型,true代表正序,False代表倒序,用以确定是保留早期的文件或者最近的文件(依赖于文件命名)
3:文件删除方式:char类型,保留文件遵照的方式:D(或d)代表按日期保留,N(或n)代表按文件数量保留
4:最大可保留数量:int类型,如果sDelType输入的类型为N/n,则表示为需要保留的文件夹个数;如果sDelType输入的类型为D/d,则表示需要保留的符合某几种日期形式种类的所有文件
5:匹配关键字:String类型,特征关键字,用于匹配识别该文件是否应被删除:匹配则不删除,不匹配则删除
输出:
打印出需处理路径下的所有文件名称清单,同时打印出删除的所有文件清单,以及删除后保留的文件清单。
要求:
1:使用Java语言进行开发,以命令行形式作为输入形式。
2:需严格按照编程规范进行代码编写,需有异常处理机制,有错误需打印错误日志,可自行定义错误码类别。
如:文件删除失败,提示“Error 111:deletefile Exception:e.getMessage()“
用户键入信息出错,如路径不存在,提示“Error101:file ‘d:\\helloworld’ doesn’t exist“
3:目标路径下文件命名统一按照格式(格式为:YYYY-MM-DD,如20121022)命名
//所有对象
private static HashMap<String,String> allObj = new HashMap<String,String>(); //要删除的对象 private static HashMap<String,String> removeObj = new HashMap<String,String>(); //要保留的对象 private static HashMap<String,String> remainObj = new HashMap<String,String>(); /** * 实现文件名排序 * @param mode:true代表正序,False代表倒序 * @param directoryPath 指定的目标文件路径 * @param keyWord 过滤关键字 */ public static void FileSort(final boolean mode, String directoryPath, String keyWord) { List<File> files = Arrays.asList(new File(directoryPath).listFiles()); Collections.sort(files, new Comparator<File>() { @Override public int compare(File o1, File o2) { if (o1.getName().compareTo(o2.getName()) > 0) { if (!mode) //升序 return -1; return 1; } else if (o1.getName().compareTo(o2.getName()) < 0) { if (mode) //升序 return -1; return 1; } else return 0; //return o1.getName().compareTo(o2.getName()); } }); for (File f : files) { if (f.getName().indexOf(keyWord)!=-1) { remainObj.put(f.getName(), f.getAbsolutePath()); }else { allObj.put(f.getName(),f.getAbsolutePath()); } System.out.println(f.getName()); } } /** * 根据路径删除指定的目录或文件 * @param directoryPath 要删除的目录或文件 * @return 删除成功返回 true,否则返回 false。 */ public static boolean DeleteFile(String directoryPath) { File f = new File(directoryPath); if (f.exists()) { if (f.isFile()) return f.delete(); else if (f.isDirectory()) { File[] files = f.listFiles(); for (File file : files) { if (!DeleteFile(file.getAbsolutePath())) return false; } return f.delete(); } else return false; } else { System.out.println("Error101:the path or the file \"" + directoryPath + "\" doesn’t exist"); return false; } } /** * 保留文件夹 * @param way 保留方式 * @param maxNum 最大保留个数 * @param allObj 所有对象 */ public static void RemainObj(char way, int maxNum, List<String> allObj) { String way_temp = String.valueOf(way).toLowerCase(); if (way_temp == "d") { } else if (way_temp == "n") { } else { } } /** * 验证输入 * @param args 输入参数字符串数组 * @return 输入有误返回false,输入无误返回true */ public static boolean ValidateInput(String[] args) { File f = new File(args[0]); if (!f.exists()) { return false; } else if (args[1].toLowerCase() != "true" || args[1].toLowerCase() != "false") { return false; } else if (args[2].toLowerCase() != "d" || args[1].toLowerCase() != "n") { return false; } else { return true; } } public static void main(String[] args) { // if (ValidateInput(args))// { // FileSort(true, "C:\\Users\\muye\\Desktop\\javatest","aa");// for (int i = 0; i < allObj.size(); i++)// { // if (i > 1)// { // HelloWorld.DeleteFile(allObj.get(i));// System.out.println(allObj.get(i));// }// }// } FileSort(false, "C:\\Users\\muye\\Desktop\\javatest","aa"); }