2014-02-22 68 views
0

7 zip文件(lzma)格式,想要压缩和加密。
我想使用Apache Commons Compress。
我正在使用此功能,但是,解压缩的文件已损坏。Java Apache Commons压缩7zip,损坏文件错误

感谢

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()); 

    byte fileContent[] = new byte[(int)entryFile.length()]; 

    sevenZOutput.putArchiveEntry(entry); 
    sevenZOutput.write(fileContent); 
    sevenZOutput.closeArchiveEntry(); 
    sevenZOutput.close();   
} 
+0

您收到的错误究竟是什么? – Avery

+0

“outfile.7z-> image.jpg”当我打开文件 “此图像文件已损坏”我收到警告。好 ? – user3236432

+0

你得到了什么警告?没有所有的细节都很难回答你的问题。 – Avery

回答

0

我想,好吧,谢谢你。我如何加密档案?

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

如果你满意你的解决方案,你可以接受你的答案 –

相关问题