Я использовал следующий код для открытия документов Office, PDF и т. Д. На компьютерах с Windows, использующих Java, и он работает нормально, за исключением некоторой причины, когда имя файла внедряет его в несколько смежных пробелов, таких как «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);
}
РЕДАКТИРОВАТЬ: Когда я запускаю его с ошибочными файлами Windows, жалуется на поиск файла. Но ... когда я запускаю командную строку прямо из командной строки, она работает просто отлично.