次のコードを使用して、Javaを使用してWindowsマシンでOfficeドキュメント、PDFなどを開きましたが、ファイル名が「File [SPACE] [」のような複数の連続したスペースに埋め込まれている場合を除いて、正常に動作しています。 SPACE]Test.doc」。
どうすればこれを機能させることができますか?私はコード全体を缶詰にすることを嫌いではありません...しかし、JNIを呼び出すサードパーティのライブラリに置き換えたくはありません。
public static void openDocument(String path) throws IOException {
// Make forward slashes backslashes (for windows)
// Double quote any path segments with spaces in them
path = path.replace("/", "\\").replaceAll(
"\\\\([^\\\\\\\\\"]* [^\\\\\\\\\"]*)", "\\\\\\\"$1\"");
String command = "C:\\Windows\\System32\\cmd.exe /c start " + path + "";
Runtime.getRuntime().exec(command);
}
編集:私が誤ったファイルでそれを実行すると、ウィンドウはファイルを見つけることについて不平を言います。しかし...コマンドラインから直接コマンドラインを実行すると、問題なく実行されます。