2014-06-11 76 views
0

我遇到了Java問題。我想知道如何使用Apache Commons Compress(或者如果有更好的方法),有沒有辦法在不解壓tar.gz的情況下編輯文件。我遇到的是tar.gz目錄,文件具有超級用戶和組狀態以及特定的rwxrwxrwx權限,這些權限在解壓縮和重新壓縮時會被清除。當我在Windows機器上運行程序時,該文件是一個unix文件。Java tar.gz壓縮 - 權限問題

我想找到一種方法來在Java中解壓縮而不會丟失原來存在的那些權限,或者編輯其中的文件。任何幫助正確的方向將不勝感激,因爲我在如何使用Java方面略有損失。

任何幫助,將不勝感激!謝謝。

回答

0

權限是操作系統特定的。但是,您可以嘗試使用java.io.File類來設置權限:http://java.sun.com/javase/6/docs/api/java/io/File.html

這個想法是在某處存儲權限,提取文件,執行任何操作,再次壓縮並應用權限。

+0

是啊,我才意識到我是不正確地使用setMode,這是我的問題的一部分。有沒有辦法在tar.gz中重新應用用戶和組?我相信tar.gz在上傳時需要root權限。到目前爲止,我已經嘗試setUserId(0),我認爲這是每個文件上的root和getuserId(0),但它似乎不工作。 – kmalik

+1

是的,看看TarArchiveEntry。你可以在那裏設置用戶和setGroup:http://commons.apache.org/proper/commons-compress/apidocs/org/apache/commons/compress/archivers/tar/TarArchiveEntry.html –

+0

謝謝亞歷山大,做到了這一點......我我正在使用TarArchiveEntry。出於某種原因,我沒有使用正確的方法來設置組和用戶。我是用ID來做的,因爲我從Linux到Windows,它可能不喜歡。仍然沒有解決我的問題,但我會繼續尋找。 我基本上是試圖un-tar.gz配置文件並重新tar.gz它,所以一件設備會接受它,我得到「無效配置」錯誤。 – kmalik