1

我想使用 Kava 解压缩特定目录和子目录中的所有文件。如果我打开终端,我可以使用这个:

find . -name '*.zip' -exec unzip {} \\

我想在我的 Java 应用程序中的某个点和某个目录中运行它,所以我使用它:

public void unzip() {
    try {
    Runtime unzipProcess = Runtime.getRuntime();
    unzipProcess.exec("find . -name '*.zip' -exec unzip {} \\");
    } catch(Exception e) {
        System.out.println(e.getMessage());
    }
}

这运行。我不知道它是否有效,因为我无法设置工作目录。我需要能够做类似的事情unzipProcess.setWorkingDirectory("/Users/abc/")。但是当然这种方法不存在,我认为我做错了什么。

如何在特定目录中运行此命令?

4

4 回答 4

2

你需要要么

我个人强烈建议使用它,ProcessBuilder因为它有更好的 API。

一般来说,我建议阅读When Runtime.exec() won't获取有关常见Runtime.exec()陷阱的信息(大部分信息也同样适用于较新的ProcessBuilderAPI)

于 2012-10-25T11:53:47.187 回答
1

您可以将find参数更改为所需的目录find /Users/abc -name '*.zip' -exec unzip {} \

或按照 Joachim Sauer 的建议切换到ProcessBuilder课堂。

于 2012-10-25T11:53:37.640 回答
1

为什么不替换起始目录“。” 在查找命令中?:

public void unzip(String workingDrirectory) {
  try {
    Runtime unzipProcess = Runtime.getRuntime();
    unzipProcess.exec("find " + workingDrirectory + " -name '*.zip' -exec unzip {} \\");
  } catch(Exception e) {
    System.out.println(e.getMessage());
  }
}
于 2012-10-25T12:07:05.777 回答
0

在命令中,您可以提供[-d exdir]参数exdir并将具有解压缩的文件。

于 2012-10-25T11:54:26.453 回答