2017-11-14 4 views
1

UNIX 시스템뿐만 아니라 Windows에도 java 코드가 배포되었습니다. 특정 디렉토리 (유닉스)로 파일을 이동하는 데 필요한 파일 권한을 추가해야합니다. PosixFilePermission을 사용하고 있습니다.PosixFilePermission이 Java에서 UnsupportedOperationException을 일으키는 경우

   file1 = new File(expFilePath+ "/" + creationDate); 
       file1.mkdir(); 
       Set<PosixFilePermission> perms = new HashSet<>(); 
       perms.add(PosixFilePermission.OWNER_READ); 
       perms.add(PosixFilePermission.OWNER_WRITE); 
       perms.add(PosixFilePermission.OWNER_EXECUTE); 
       perms.add(PosixFilePermission.OTHERS_READ); 
       perms.add(PosixFilePermission.OTHERS_WRITE); 
       perms.add(PosixFilePermission.OTHERS_EXECUTE); 
       perms.add(PosixFilePermission.GROUP_READ); 
       perms.add(PosixFilePermission.GROUP_WRITE); 
       perms.add(PosixFilePermission.GROUP_EXECUTE); 
       try { 
        Files.setPosixFilePermissions(file1.toPath(), perms); 
       } catch (IOException e1) { 
        e1.printStackTrace(); 
       } 

위의 코드는 유닉스에서 제대로 실행하지만 윈도우 m에 UnsupportedOperationException가의 원인은/C.I는 M/C 창에서 코드를 실행하는 동안 수동으로 코드의이 부분을 언급해야한다.

Java에서 기본 OS 유형을 감지하고 조건부로이 코드 블록을 실행할 수있는 방법이 있습니까?

+1

OS를 검색하려면 https://stackoverflow.com/questions/3282498/how-can-i-detect-a-unix-like-os-in-java를 확인하십시오. 그런 다음 Windows에서 비슷한 permision을 설정하려면 https://www.journaldev.com/855/how-to-set-file-permissions-in-java-easily-using-java-7 링크를 사용하십시오. -posixfilepermission – Apolozeus

답변

1

Path 개체가있는 경우 Path.getFileSystem() 메서드를 사용하여 기본 파일 시스템 개체를 가져올 수 있습니다. 그것에는 FileSystem.supportedFileAttributeViews() 방법이 있습니다. 파일 시스템이 POSIX 파일 속성 (및 사용 권한)을 지원하는 경우 반환되는 세트에는 "posix" 문자열이 포함됩니다.