2014-02-23 25 views
0

我正在使用Apache Commons Compress來壓縮文件。 如何將密碼添加到檔案中?如何加密java 7z存檔?

public static void main(String args[]) throws FileNotFoundException, IOException { 
SevenZOutputFile sevenZOutput = new SevenZOutputFile(new File("outFile.7z")); 
File entryFile = new File("D:/image.jpg"); 
SevenZArchiveEntry entry = sevenZOutput.createArchiveEntry(entryFile, entryFile.getName()); 
sevenZOutput.putArchiveEntry(entry); 
FileInputStream in = new FileInputStream(entryFile); 
       int len; 
       byte buffer[] = new byte[8192]; 
       int transferedMegaBytes2=0; 
       while ((len = in.read(buffer)) > 0) { 
        sevenZOutput.write(buffer, 0, len);      
        transferredBytes += len; 
        int transferedMegaBytes = (int) (transferredBytes/1048576);       
        if(transferedMegaBytes>transferedMegaBytes2){ 
        System.out.println("Transferred: " + transferedMegaBytes + " Megabytes."); 
        transferedMegaBytes2=transferedMegaBytes; 
        } 
       } 
sevenZOutput.closeArchiveEntry(); 
sevenZOutput.close();  
} 
+0

與其試圖保護存檔本身,爲什麼不只是通過某種類型的加密流放出流,以便內容是加密,然後壓縮...? – MadProgrammer

回答

0

恐怕壓縮不被支持。您可能需要使用JNI wrapper

如果你這樣做,你可能會失去平臺的獨立性。 (他們說這是跨平臺的,但我不會打賭)

0

我不認爲你可以使用Commons Compress。從Apache下議院壓縮網站的examples部分:

我們目前只提供閱讀LZMA,ARJ,轉儲和Z.支持ARJ 只能讀取非壓縮的檔案,7z格式可以讀很多 壓縮和加密檔案算法支持7z但不支持 支持加密寫檔案時。

+0

你有另一個圖書館可以使用嗎?我想用lzma壓縮。 – user3236432

+0

也許7zip LZMA SDK可以做到這一點,但我還沒有嘗試過,文檔看起來有點欠缺。 http://www.7-zip.org/sdk.html – jpw