2017-11-14 11 views
1

私はWindowsとUNIXシステムにjavaコードをデプロイしています。ファイルを特定のディレクトリ(unix)に移動するためのファイルアクセス権を追加する必要があります。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(); 
       } 

上記のコードは、UNIXで正しく実行されているが、Windows 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で同様のパーミッションを設定する場合は、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"が含まれます。

関連する問題