2011-07-27 45 views
7

當我使用FileUtils.copyDirectory()時,關於可執行文件的執行位被關閉。
我是否必須手動打開它們?如何在使用FileUtils.copyDirectory時保留文件權限?

FWIW,我的umask設置爲0027,但它看起來像FileUtils.copyDirectory()沒有使用該設置,因爲除了執行位之外的其他權限被保留。

+0

你在使用什麼操作系統?如果Linux,FreeBSD和Mac OS X的行爲不同,我不會感到驚訝...... – gutch

+0

我在Linux上。 由於我有一個解決方法,我會等到我的公司採用Java 7。 –

回答

3

我不認爲它可能是因爲JVM的限制。 IO API和行爲對於世界上最流行的語言/平臺來說是有點可恥的。

如果你看一下文件實用程序的源代碼,在複製它創建類似這樣的

File copiedFile = new File(destDir, srcFile.getName()); 

文件權限不保留新的文件。在實際複製過程中,這些字節被批量複製(緩衝)並寫入新文件。

但是,您可能需要等待幾天或使用帶有apis的JDK7預覽版才能實現此功能。

相關問題