Файл не может открыться, если в имени файла есть двойные пробелы

Я пытаюсь открыть изображение с помощью Java-программы, имя файла которой имеет более одного раза пробелы. Прямая команда Windows работает нормально, но когда я выполняю ее через Java-программу, она не открывается.

прямая команда:

rundll32.exe shell32.dll ShellExec_RunDLL "C:\Logfiles\Client_Logfiles\Attachments\1044\image2   Copy.jpg"

через Java:(это не работает)

p_fileName = "C:\Logfiles\Client_Logfiles\Attachments\1044\image2   Copy.jpg"
String cmd = "rundll32.exe shell32.dll ShellExec_RunDLL ";
Runtime.getRuntime().exec(cmd + "\""+p_fileName+"\"");

Но если имя файла имеет один пробел, это нормально и открывается правильно:

Пожалуйста, любые идеи по этому поводу и ценим вашу помощь.

2 ответа

Решение

Проблема в том, что вы объединяете команду. Чтобы исправить это, используйте версию массива exec и используйте "/" вместо "\":

String args[] = {
    "rundll32.exe",
    "shell32.dll",
    "ShellExec_RunDLL",
    "C:/Logfiles/Client_Logfiles/Attachments/1044/image2   Copy.jpg"
};
Runtime.getRuntime().exec(args);

Попробуйте с:

p_fileName = "C:\\Logfiles\\Client_Logfiles\\Attachments\\1044\\image2   Copy.jpg"

Или же

p_fileName = "C:/Logfiles/Client_Logfiles/Attachments/1044/image2   Copy.jpg"
Другие вопросы по тегам