使用命令行在Windows中的zip文件夹

时间:2012-05-03 23:57:34

标签: java windows command

我正在编写一个需要压缩文件的程序。 这将在Linux和Windows机器上运行。它在Linux中运行得很好,但我无法在Windows中完成任何操作。 要发送命令,我使用的是apache-net项目。我也尝试过使用Runtime()。exec 但它不起作用。 有人可以提出建议吗?

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) {
    }

3 个答案:

答案 0 :(得分:6)

Java在java.util.zip。*中提供了自己的压缩库,它支持.zip格式。可以找到拉链文件夹的示例here。这是一个适用于单个文件的快速示例。使用本机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 :(得分:3)

相同的代码在Windows中不起作用。 Windows没有像Linux那样的“zip”程序。您将需要查看Windows 7是否具有命令行zip程序(我不认为它;请参见此处:http://answers.microsoft.com/en-us/windows/forum/windows_vista-files/how-to-compress-a-folder-from-command-prompt/02f93b08-bebc-4c9d-b2bb-907a2184c8d5)。您可能需要做两件事

  1. 确保用户拥有合适的第三方zip程序
  2. 执行OS检测以执行正确的命令。

答案 2 :(得分:0)

您可以使用内置的compact.exe在dos中压缩/解压缩

它显示或改变NTFS分区上文件的压缩。

  

COMPACT [/ C | / U] [/ S [:dir]] [/ A] [/ I] [/ F] [/ Q] [文件名[...]]

/ C压缩指定的文件。将对目录进行标记,以便之后添加的文件将被压缩。

/ U解压缩指定的文件。将对目录进行标记,以便之后添加的文件不会被压缩。

/ S对给定目录和所有子目录中的文件执行指定的操作。默认“dir”是当前目录。

/ A显示具有隐藏或系统属性的文件。默认情况下会省略这些文件。

/ I即使发生错误,仍继续执行指定的操作。默认情况下,COMPACT在遇到错误时停止。

/ F强制对所有指定文件执行压缩操作,即使是已经压缩的文件也是如此。默认情况下会跳过已压缩的文件。

/ Q仅报告最基本的信息。

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

在没有参数的情况下使用,COMPACT显示当前目录及其包含的任何文件的压缩状态。您可以使用多个文件名和通配符。您必须在多个参数之间放置空格。


实施例

紧凑

显示当前目录中的所有文件及其紧凑状态。

compact file.txt

显示文件file.txt

的紧凑状态

压缩文件.txt / C

压缩file.txt文件。