private static void m001() { // 문제1. 파일명을 아래와 같이 변경하시오. // 보기] aaa.txt // bbb.txt // 안녕.hwp // hello.java // 실행] // 결과] [01]aaa.txt // [02]bbb.txt // [03]안녕.hwp // [04]hello.java // 코드] renameTo : 파일명바꾸기 // aaa.txt -> [01]aaa.txt // 조건] 해당 폴더 파일의 갯수가 10개 미만이면 숫자를 1자리 // 해당 폴더 파일의 갯수가 100개 미만이면 숫자를 2자리 // 해당 폴더 파일의 갯수가 1000개 미만이면 숫자를 3자리 File dir = new File("D:\\temp\\AAA"); // 작업경로 지정 String path = dir.getPath(); // dir의 경로 문자열 File[] list = dir.listFiles(); // dir의 배열 list선언 int fileCnt = 0; // 카운터 for (File i : list) { if (i.isFile()) fileCnt++; // file/folder 필터링 } int totalLen = (fileCnt + "").length(); // (변경할 파일의 총 갯수)의 자릿수 fileCnt = 0; for (int i = 0; i < list.length; ++i) { // i=0 ~ dir 구성원의 갯수만큼 String reName = path + "\\["; if (list[i].isFile()) { // 파일일 경우에만 fileCnt++; int cntLen = (fileCnt + "").length(); if (cntLen < totalLen) { for (int j = cntLen; j < totalLen; ++j) { reName += "0"; } } reName += fileCnt + "]" + list[i].getName(); System.out.println(reName); } } }
아래가 더 간단함
private static void m002() { String path = "D:\\temp"; // dir의 경로 문자열 File dir = new File(path); // 작업경로 지정 File[] list = dir.listFiles(); // dir의 배열 list선언 int fileCnt = 0; // 카운터 for (File i : list) { if (i.isFile()) fileCnt++; // file/folder 필터링 } int totalLen = (fileCnt + "").length(); // (변경할 파일의 총 갯수)의 자릿수 fileCnt = 0; for (int i = 0; i < list.length; ++i) { if (list[i].isFile()) { String txt1 = String.format("\\\\[%%0%dd]", totalLen); String txt2 = String.format(txt1, ++fileCnt); File dest = new File(path + txt2 + list[i].getName()); System.out.println(dest.getAbsolutePath()); } } }