728x90
반응형
파일 존재여부확인하여 시퀀스번호를 붙이는 유틸
파일 을 복사하여 사용자에게 zip 으로 묶어주는 프로그램을 만들던중 동일한 파일명을 가진 파일에 대한 처리가 필요하여 만들어본 유틸이다.
작업중인 디렉토리에 동일한 파일명이 존재한다면 recursive 하게 메서드를 호출하여 _1,_2,_3 ... 같이 파일명뒤에 시퀀스를 카운트해준다.
테스트 케이스는 아래와 같다.
test_ - 복사본.txt
test_.txt
test.txt
test_1.txt
_test_1.txt
_.txt
_1.txt
위 와 같은 테스트 형식의 파일이 들어올경우에 대해서도 테스트 가 끝난 코드이므로 일반적인 예에서의 버그는 적을꺼라 보긴하나
추가적으로 버그가 리포팅된다면 소스도 변경하도록하겠다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | /** * 동일한 파일명의 파일이 존재하는지 확인하여 존재한다면 파일명 뒤에 "_숫자" 를 * 붙이고 "_숫자"가 존재한다면 "_숫자" +1 을 더한값을 재귀적으로 카운트 * @author digimon1740 * */ public static String appendSuffixName(String orgFileName, int seq) { String retFileName = ""; // 파일이 존재하는지 확인한다. if (new File(orgFileName).exists()) { int plusSeq = 1; String seqStr = "_" + seq; String firstFileName = orgFileName.substring(0, orgFileName.lastIndexOf(".")); String extName = orgFileName .substring(orgFileName.lastIndexOf(".")); // 만약 파일명에 _숫자가 들어간경우라면.. if (orgFileName.lastIndexOf("_") != -1 && !firstFileName.endsWith("_")) { String numStr = orgFileName.substring( orgFileName.lastIndexOf("_") + 1, orgFileName.lastIndexOf(extName)); try { plusSeq = Integer.parseInt(numStr); plusSeq = plusSeq + 1; retFileName = firstFileName.substring(0, firstFileName.lastIndexOf("_")) + "_" + plusSeq + extName; } catch (NumberFormatException e) { retFileName = firstFileName + seqStr + extName; return appendSuffixName(retFileName, ++plusSeq); } } else { retFileName = firstFileName + seqStr + extName; } // 재귀 return appendSuffixName(retFileName, ++plusSeq); } else { return orgFileName; } } |
728x90
반응형
'JAVA' 카테고리의 다른 글
인코딩 - 8859_1의 비밀(?) (0) | 2015.04.27 |
---|---|
JAVA 로 Dummy File 생성하기 (0) | 2015.01.07 |
SWING 개발시 클립보드에 내용을 복사하기 (0) | 2014.10.17 |
Runtime 클래스를 이용한 외부파일 실행 (0) | 2014.09.30 |
Lombok 을 이용한 getter,setter 자동생성 (0) | 2014.08.28 |