1. ホーム
  2. java

[解決済み] ファイルパーミッションをプログラムで変更するには?

2022-05-25 06:09:01

質問

Javaで、一連のファイルを動的に作成し、Linux/unixファイルシステム上のこれらのファイルのパーミッションを変更したいと思います。 私は、次の Java と同等のものを実行できるようにしたいと思います。 chmod . それは、Java 5で可能ですか?もしそうなら、どのように?

私はJava 6で知っている File オブジェクトには setReadable() / setWritable() のようなメソッドがあります。これを行うためにシステムコールを作成できることも知っていますが、可能であればそれは避けたいと思います。

どのように解決するのですか?

ファイル属性の完全な制御は、Java 7 の "new" New IO 機能の一部として利用可能です ( NIO.2 ). 例えば、POSIX パーミッションは、既存のファイルに対して setPosixFilePermissions() , のようなメソッドで、ファイル作成時にアトミックに、あるいは createFile() または newByteChannel() .

パーミッションのセットを作成するには EnumSet.of() を使うことができますが、ヘルパーメソッド PosixFilePermissions.fromString() は多くの開発者にとって読みやすい従来の形式を使用します。を受け付けるAPIでは FileAttribute を受け付ける API では、許可属性を PosixFilePermissions.asFileAttribute() .

Set<PosixFilePermission> ownerWritable = PosixFilePermissions.fromString("rw-r--r--");
FileAttribute<?> permissions = PosixFilePermissions.asFileAttribute(ownerWritable);
Files.createFile(path, permissions);

以前のバージョンのJavaでは、自作のネイティブコードを使って、あるいは exec -コマンドラインユーティリティを使用するのが一般的な方法です。