728x90
반응형
이번에 java에서 폴더 및 파일 생성시에 모든 사용자가 접근할 수 있도록 권한을 설정해주어야 하는 일이 생겼다.
그래서 정리해본다.
자바에서 폴더 및 파일 생성시 접근권한 설정하는 방법
폴더와 파일 둘 다 코드는 똑같다. 차이점은 폴더명까지 적느냐, 아니면 파일명까지 적느냐이다.
폴더 경로 : /data/myFile/새폴더
파일 경로 : /data/myFile/새폴더/두루미.jpg
위의 예시는 아래 샘플코드에서의 filePath에 들어가는 값이다.
만약 폴더에 접근권한을 설정해주고 싶다면 폴더 경로까지만 적어서 filePath에 값을 넣어주고
파일에 접근권한을 설정해주고 싶다면 파일 경로를 적어 filePath에 값을 넣어주면 된다.
샘플코드
기본코드
String pilePath = [파일경로] + "/" + [파일명];
// 모든 사용자 접근권한 허용 : chmod 777
Runtime.getRuntime().exec("chmod 777 -R" + pilePath);
샘플코드에서 다른 건 보지 말고 그냥 주석처리 된
// 파일 생성시 모든 사용자 접근권한 설정
코드만 보도록 하자. 나머지는 그냥 파일 생성하는 코드니까..
샘플코드
List<MultipartFile> myFiles = request.getFiles("myFiles");
FileOutputStream fileOutputStream = null;
String savePath = "/data/files" // 파일이 저장 될 경로
while ((file = myFiles.getNextEntry())!=null){
String entryNm = file.getFileName(); // 원본파일명
String entryExtNm = StringHelper.getFileExt(entryNm); //첨부파일 확장자
String filePath = savePath +"/"+ entryNm; // 경로 + 파일명
fileOutputStream = new FileOutputStream(filePath);
// 파일 생성시 모든 사용자 접근권한 설정
Runtime.getRuntime().exec("chmod 777 -R" + filePath);
.
.
.
}
조금 더 안전한 코드?
근데 사실 위의 코드는 좋은 코드는 아니다.
Runtime.getRuntime().exec("chmod 777 -R" + filePath);
이녀석은 살짝 위험한데... 왜냐하면 권한을 설정하기 전에 파일이 생성되어 버린다거나 하면
제대로 권한이 설정되지 않기 때문이다.
그렇기 때문에 아래의 코드를 쓰는 것이 조금 더 안전하다고 볼 수 있다.
String cmd = "chmod 777 -R " + [폴더경로] or [파일경로];
Runtime rt = Runtime.getRuntime();
Process prc = rt.exec(cmd);
prc.waitFor();
위의 코드는 해당 폴더 또는 파일에 권한을 설정할때까지 기다렸다가, 다음코드를 실행하기 때문에
조금 더 안전하다~
728x90
반응형