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() will notを読むことをお勧めします (ほとんどの情報は、新しいAPI にも同様Runtime.exec()に適用されます)。ProcessBuilder

于 2012-10-25T11:53:47.187 に答える
1

find引数を目的のディレクトリに変更できますfind /Users/abc -name '*.zip' -exec unzip {} \

ProcessBuilderまたは Joachim Sauer が提案するように、クラスに切り替えます。

于 2012-10-25T11:53:37.640 に答える
1

Why not replace the starting directory "." in the find command?:

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 に答える