2016-10-20 15 views
0

Я пытаюсь открыть изображение с помощью java-программы, имя файла которой имеет более одного раза пробелы. команда direct 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+"\""); 

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

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

+1

Используйте '\\' или '/' вместо '\' в Java строк. –

+0

Путь к файлу начинается с чтения файла, поэтому, если имя файла имеет одно место, эта команда работает нормально. :(Эта проблема возникает только в том, что файл имеет два или более пробела в имени файла. – DMM

ответ

0

Проблема заключается вы конкатенации команды. Чтобы сделать правильный вариант использования массива Exec и использования '/' вместо '\':

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

Да, ваше решение работает. Отличная помощь и большое спасибо. – DMM

+0

[ProcessBuilder] (http://docs.oracle .com/javase/8/docs/api/java/lang/ProcessBuilder.html) предпочтительнее, чем Runtime.exec. – VGR

0

Try с:

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

Или

p_fileName = "C:/Logfiles/Client_Logfiles/Attachments/1044/image2 Copy.jpg" 
+0

Это всегда должно делать то же самое (за исключением случаев, когда вы его распечатываете) –

+0

Путь к файлу начинается с чтения файла, поэтому, если имя файла имеет одно пространство , эта команда работает нормально. :( – DMM

+0

Эта проблема происходит только в файле имеет два или более пробелов в имени файла. – DMM

 Смежные вопросы

  • Нет связанных вопросов^_^