FileUtils.copyDirectory()
を使用すると、実行可能ファイルの実行ビットがオフになります。
手動でオンにする必要がありますか?FileUtils.copyDirectoryを使用しているときにファイル許可を保持する方法は?
FWIW、私のumaskは0027に設定されていますが、FileUtils.copyDirectory()
は実行ビット以外の 'その他'のパーミッションが保持されているため、この設定を使用していないようです。
FileUtils.copyDirectory()
を使用すると、実行可能ファイルの実行ビットがオフになります。
手動でオンにする必要がありますか?FileUtils.copyDirectoryを使用しているときにファイル許可を保持する方法は?
FWIW、私のumaskは0027に設定されていますが、FileUtils.copyDirectory()
は実行ビット以外の 'その他'のパーミッションが保持されているため、この設定を使用していないようです。
JVMの制限のために可能性はありません。 IO APIと動作は、世界で最も人気のある言語/プラットフォームにとってちょっと恥ずかしいものです。
あなたが中に、のfileutilsソースコードを見た場合には、
File copiedFile = new File(destDir, srcFile.getName());
この
のように、それは新しいファイルを作成し、コピーしたファイルのパーミッションは保持されません。そして、実際のコピーの間、バイトはバッチで(バッファされて)コピーされ、新しいファイルに書き込まれます。しかし、これを可能にするためにapiを持つJDK7のプレビューリリースを使用することもできます。
Java 7の次のファイルシステムの追加が役立ちます。 JSR-203を見てください。 Linuxを使用している場合は、backportをJava 6で使用できます。
新しいAPIは、Files.copy(Path, Path, CopyOptions)
です。 CopyOptions
にはCOPY_ATTRIBUTES
があることに注意してください。
使用しているオペレーティングシステムは? Linux、FreeBSD、Mac OS Xで動作が異なる場合、私は驚くことはありません。 – gutch
私はLinuxを使用しています。 私は回避策があるので、私は自分の会社でJava 7を採用するまで待つでしょう。 –