본문 바로가기
프로그래밍/Java-자주쓰는예제

【Java-파일】파일과 디렉토리 권한 확인하기

by 코이킹 2021. 9. 12.
반응형

1. 설명 

리눅스에서 ls -la 명령어를 실행하면 파일명과 함께 가장 왼쪽부분에 

-rwxrw-r-- 
drwxrw-r-- 

이러한 정보를 확인 할 수 있습니다. 
이 정보는 파일 또는 디렉토리의 권한을 나타내는 정보로 4부분으로 다시 나눌 수 있습니다. 

-(파일) , d(디렉토리) rwx rw- r-- 
파일인지 디렉토리인지 소유자 권한 그룹 권한 기타 다른 사용자 권한

rwx에서 r은 읽기권한, w는 쓰기 권한, x는 실행권한을 나타냅니다. 

※ 권한이 없다면 -로 표시됨
다시 r은 숫자 4로 , w는 2로 , x는 1로 치환할 수 있습니다. 

리눅스에서 파일이나 디렉토리에 권한부여를 할때 명령어 chmod로 숫자값을 사용하여 권한을 부여할 수 있습니다. 

chmod 755 {파일}


위 명령어에서 부여하는 권한은 사용자는 읽고, 쓰고, 실행하는 모든 권한을, 그룹과 기타사용자는 읽기와 실행권한만을 부여하게 됩니다. 

이 포스트의 예제는 파일의 권한정보를 chmod로 권한을 부여할때 나타내는 숫자값과 동일한 방식으로 확인할 수 있는 코드입니다. 


2. 소스코드

- 메서드

	public Integer checkPermission(String path) {
		File f = new File(path);
		
		if (!f.exists()) {
			return null;
		}
		
		Integer permission = 0;
		permission += (f.canExecute()) ? PERMISSION_X : 0;
		permission += (f.canWrite()) ? PERMISSION_W : 0;
		permission += (f.canRead()) ? PERMISSION_R : 0;
		
		return permission;
	}


- 메인 

public class File_07_CheckPermission {

	public static void main(String[] args) {
		try {
			for (String str : args ) {
				System.out.println("Param : "+str);
			}

			String path = args[0];
			FileUtil fu = new FileUtil();
			
			System.out.println("Result : "+ fu.checkPermission(path));
			
			System.exit(0);
			
		} catch (Exception e) {
			e.printStackTrace();
			System.exit(1);
		}
	}
}

3. 실행결과【Windows(이클립스) / Linux】

【Windows】모든 권한이 있을때 결과 '7'을 반환한다.

 

【Windows】읽기 전용일때는 파일을 실행하고 읽기만 가능하므로 '5'를 반환한다.

 



4. 전체코드

https://github.com/leeyoungseung/template-java

반응형

댓글