Web/JSP_SERVLET

File Upload Rename Policy(파일이름 중복 정책)

벨포트조던 2016. 4. 7.
반응형

http://krespo.net/50




File Upload를 수행할때 이전에 있던 파일과 비교하여 같은 이름이 있을경우 파일명 뒤에 숫자를 붙여주는 역할을 한다.사용 예)


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
package com.myhome.upload.policy;
 
import java.io.File;
import java.io.IOException;
 
public class FileRenamePolicy {
   
  public File rename(File f) {             //File f는 원본 파일
    if (createNewFile(f)) return f;        //생성된 f가 중복되지 않으면 리턴
     
    String name = f.getName();
    String body = null;
    String ext = null;
 
    int dot = name.lastIndexOf(".");
    if (dot != -1) {                              //확장자가 없을때
      body = name.substring(0, dot);
      ext = name.substring(dot);
    } else {                                     //확장자가 있을때
      body = name;
      ext = "";
    }
 
    int count = 0;
    //중복된 파일이 있을때
    //파일이름뒤에 a숫자.확장자 이렇게 들어가게 되는데 숫자는 9999까지 된다.
    while (!createNewFile(f) && count < 9999) { 
      count++;
      String newName = body + count + ext;
      f = new File(f.getParent(), newName);
    }
    return f;
  }
 
  private boolean createNewFile(File f) {
    try {
      return f.createNewFile();                        //존재하는 파일이 아니면
    }catch (IOException ignored) {
      return false;
    }
  }
}


다음과 같이 사용할 수 있다.

1
2
File file = new File(UploadUtil.SAVE + bean.getFileFileName());
file = new FileRenamePolicy().rename(file);


반응형

댓글