2012-05-03 38 views
3

我在寫一個需要壓縮文件的程序。 這將運行在Linux和Windows機器上。它在Linux中工作得很好,但我無法在Windows中完成任何操作。 發送命令我正在使用apache-net項目。我也嘗試過使用Runtime()。exec 但它不起作用。 有人可以提出一些建議嗎?使用命令行窗口中的zip文件夾

CommandLine cmdLine = new CommandLine("zip"); 
    cmdLine.addArgument("-r"); 
    cmdLine.addArgument("documents.zip"); 
    cmdLine.addArgument("documents"); 
    DefaultExecutor exec = new DefaultExecutor(); 
    ExecuteWatchdog dog = new ExecuteWatchdog(60*1000); 
    exec.setWorkingDirectory(new File(".")); 
    exec.setWatchdog(dog); 
    int check =-1; 
    try { 
     check = exec.execute(cmdLine); 
    } catch (ExecuteException e) { 

    } catch (IOException e) { 
    } 
+0

我們可以看看您的代碼 – Satya

+0

您在Windows中使用的是什麼zip程序? – madth3

+0

當您發佈代碼時,也請發佈任何錯誤消息。 –

回答

0

您可以使用內置的compact.exe壓縮/解壓縮在DOS

它顯示或改變文件的NTFS分區上的壓縮。

COMPACT [/ C |/U] [/ S] [/ F] [/ Q] [文件名[...]]

/C壓縮指定的文件。目錄將被標記,以便以後添加的文件將被壓縮。

/U解壓縮指定的文件。目錄將被標記,以便以後添加的文件不會被壓縮。

/S對給定目錄和所有子目錄中的文件執行指定的操作。默認的「目錄」是當前目錄。

/A顯示隱藏或系統屬性的文件。這些文件在默認情況下被省略。

/I即使發生錯誤後仍繼續執行指定的操作。默認情況下,COMPACT在遇到錯誤時停止。

/F對所有指定文件(包括已經壓縮的文件)強制進行壓縮操作。已經壓縮的文件在默認情況下被跳過。

/Q僅報告最重要的信息。

filename指定模式,文件或目錄。

無參數使用時,COMPACT顯示當前目錄及其包含的任何文件的壓縮狀態。您可以使用多個文件名和通配符。您必須在多個參數之間放置空格。


例子

緊湊

顯示當前目錄下的所有文件,其緊湊的狀態。

小型文件。TXT

顯示該文件的緊湊狀態file.txt的

緊湊file.txt的/ C

壓實file.txt的文件。

6

Java在支持.zip格式的java.util.zip。*中提供了它自己的壓縮庫。拉鍊文件夾的例子可以在​​找到。這是一個適用於單個文件的快速示例。使用本機Java的好處是它可以在多個操作系統上工作,並且不依賴於安裝特定的二進制文件。

public static void zip(String origFileName) { 
    try { 
     String zipName=origFileName + ".zip"; 
     ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipName))); 
     byte[] data = new byte[1000]; 
     BufferedInputStream in = new BufferedInputStream(new FileInputStream(origFileName)); 
     int count; 
     out.putNextEntry(new ZipEntry(origFileName)); 
     while((count = in.read(data,0,1000)) != -1) { 
     out.write(data, 0, count); 
     } 
     in.close(); 
     out.flush(); 
     out.close(); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 
    } 
+1

您可能希望使用'origFileName'作爲參數到'ZipEntry',而不是'zipName'。 –

+0

啊,很好。我糾正了它。 – phatfingers

相關問題