2011-06-22 4 views
2


ファイルのUnix権限を読み取り/設定し、プロセスがJavaでユーザー/グループ/その他の権限を持っているかどうかを確認する方法はありますか?私はそれがJNIの問題ではないことを知っていますが、私はJNIなしでクロスプラットフォームのソリューションが必要です。JavaでUnixファイルの権利を取得する方法

+3

** unix **ファイルの権利を読むには、クロスプラットフォーム**ソリューションが必要ですか?ああ、それはいくつかのJavaの無関係の理由で問題があるようです。 JavaがFile APIで提供する情報が十分でない場合は、UNIX固有の解決策を使用する必要があります。 Jdk7のNIO Fileクラスは、ACLとUnixの両方の権利をサポートしていますが、どうやって移植可能かはわかりません。高レベルの情報に固執する必要があります – Voo

+1

"Unix file rights"(パーミッション?)doesn '非常に "クロスプラットフォーム"のサウンド! –

+0

著者が「Unixファイルモードをサポートするプラットフォームを越えて」という意味で、JNIを書いたり、サポートしたいプラットフォームごとにライブラリをコンパイルしたりする必要がなくなったことは明らかです。 –

答えて

5

これは、パッケージjava.nio.file.attributeのクラスを使用して、今夏リリースされる予定のJava 7で可能になる予定です。 JDK 7 API documentationを参照してください。

Java 6以前のバージョンでは、Unixファイルシステムの権限で動作する標準ライブラリには何も含まれていません。

したがって、Java 7 APIを使用すると、JNIは必要なくなりますが、Vooはクロスプラットフォームにならないと言います.WindowsなどのUnix以外のシステムではUnixファイルの権限がサポートされていないためです。

+0

Java7はUNIXファイルをサポートしているかもしれませんが、そのような低レベルの情報が本当に必要な場合は、JNIを使​​用するよりもポータブルではありません。 – Voo

+0

Unixの権利をWindowsの権利では、Windows/UnixのACLをUnixの権利のリストに記載することが可能でなければなりません。 –

+0

@Voo JNIでは、各UNIXタイプのJNI部品を再構築する必要があることを認識しています。 Mac、Linux、Solarisなどで使用されているので、このアプローチは大いに役立ちます。しかしながら、「クロスプラットフォーム」という言葉は、それが心を例えば幸福に導くように残念である。 Windows。 – vidstige

1

現在、一般的なファイルアクセス権管理APIはjavaにはありません。将来のJavaリリースをターゲットにしています。今のとして、我々はFile.canRead()/ canWrite()/ canExecute()、およびFile.setExecutable ...

3
Set<PosixFilePermission> filePerm = null; 
try { 
    filePerm = Files.getPosixFilePermissions(Paths.get("/app/data/abc.txt")); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
String permission = PosixFilePermissions.toString(filePerm); 
のJava 1.7からサポートされている

、ないクロスプラットフォームその後、もうありません。

関連する問題