[解決済み] ファイルパーミッションをプログラムで変更するには?
質問
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
-コマンドラインユーティリティを使用するのが一般的な方法です。
関連
-
Enumとの組み合わせでswitchの使い方を一度覚えるために必要な定数式
-
このラインで複数のマーカーを解決する方法
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] チェックされていないキャストの警告に対処するにはどうすればよいですか?
-
[解決済み] Javaで、オブジェクトの大きさを決定する最も良い方法は何ですか?
-
[解決済み】Javaの「ダブルブレース初期化」の効率化?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
IllegalArgumentException この例外を解決する方法
-
Eclipseで "XXXX "の解決策を(型に)解決することができない
-
javaの模造品QQ WeChatのチャットルーム
-
java Mail send email smtp is not authenticated by TLS encryption solution.
-
サーブレットクラスのインスタンス化エラーの解決法
-
Java コンパイルエラー - スレッド "main" で例外 java.lang.Error: 未解決のコンパイル問題です。
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
スレッド "main" で例外発生 java.net.BindException: アドレスは既に使用中です。NET_Bind
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
Java(1)仕上げの基本概念+eclipseのインストール構成