자바(Java)
자바 디렉토리와 파일명 유일하게 리턴하는 메소드
xemaker
2022. 4. 5. 15:05
의외로 중요한 자바 파일 다루는것을 잘 못하는 개발자가 많다.
그냥 파일명을 년월일시분초밀리세컨드 하면 유일하다고 생각하는 사람이 많다.
하지만 동시접속하는 사람이 많으면 얘기가 달라진다.
중복이 생길수가 있다.
그래서 년월시시분초밀리세컨드로 부족하니 랜덤값을 붙여주는게 좋다.
아래 코드는 년월시시분초밀리세컨드+5자리 랜덤값을 붙여 리턴하는 메소드 이다.
이러면 유일한 값으로 사용할 수 있을것이다.
정 불안하면 랜덤값을 더 만들어도 되고..
컨피그에는
<entry key="file.baseDir">D:/fileDown</entry>
<entry key="file.dirPattern">yyyy/MM/dd</entry>
<entry key="file.savePattern">yyyyMMddHHmmssSSS</entry>
라고 가정하고
public File makeUploadDirSuffix(String ty, String userFileName){
Random rand=new Random();
int randNum=rand.nextInt(10000);
String suffix=String.valueOf(randNum);
String code="AA";
String fileDirPattern=CommonUtil.getConfig("file.dirPattern");
if(StringUtil.safe(fileDirPattern)){
fileDirPattern=DateUtil.getDateString(new Date(), fileDirPattern);
}
String fileUploadDir = CommonUtil.getConfig("file.baseDir")+"/"+code+"/"+ty+"/"+fileDirPattern;
String fileSavePattern=CommonUtil.getConfig("file.savePattern");
if(StringUtil.safe(fileSavePattern)){
fileSavePattern=DateUtil.getDateString(new Date(), fileSavePattern)+suffix;
if(userFileName.lastIndexOf(".")>-1){
fileSavePattern+=userFileName.substring(userFileName.lastIndexOf("."));
}
}
File uploadDirFile=new File(fileUploadDir);
if(!uploadDirFile.exists()){
uploadDirFile.mkdirs();
}
return new File(fileUploadDir+"/"+fileSavePattern);
}
}