2016-03-17 4 views
0

Я использую следующий код, чтобы открыть произвольный файл с произвольным приложением, установленным на системе:результаты Process.Start в файл не найден, даже если файл существует

if (File.Exists(_document.DocumentFullPath)) 
{ 
    Process.Start(_document.DocumentFullPath); 
} 
else MessageBox.Show(string.Format("Document {0} does not exist!", _document.DocumentFullPath)); 

Когда я выполнить этот код I см., что файл.Exists возвращает true, поэтому файл существует. Но затем открывается соответствующее приложение, например, средство просмотра изображений или просмотрщик PDF в зависимости от типа файла (jpg или pdf), который я пытаюсь открыть, но он показывает ошибку в этом приложении, что он не может найти файл. Никакие исключения не выбрасываются. Это происходит не всегда, но только для некоторых файлов. Если я попытаюсь открыть эти файлы вручную, скопировав содержимое документа DocumentFullPath в проводнике, то файл откроется правильно в применимом приложении.

Duh Я не понимаю, что не так. Пример файла, которые не работают:

C:\Users\stuyckp\Documents\Visual Studio 2010\Projects\WPF\FrakoKlantOpvolgingWPF\FrakoKlantOpvolgingWPF\bin\Debug\ProjectDocumenten\11339_Wigbers\6197_koelkast \big-money.jpg 

Я бегу на окнах 10.

+0

Вы используете абсолютные или относительные пути? – Default

+0

Абсолютные пути, как и в примере. –

+0

Можете ли вы добавить код, запускающий процесс? – CodingGorilla

ответ

3

У вас есть пробелы в пути к файлу? File.Exists могут обрабатывать пространства в порядке, предположительно, как и в Windows Explorer, но возможно, что Process.Start не может.

Я думаю, что это то, что вы хотите бутон. Используйте начало процесса, используя объект ProcessStartInfo с файловым путем с пробелами, переданными как строка отдельно.

Use Process.Start with parameters AND spaces in path

+0

Это хороший момент, вероятно, следует изменить код: 'Process.Start (" \ "" + _document.DocumentFullPath + "\" ");'. – CodingGorilla

+0

Process.Start может работать с ним (работает для меня, например, с текстовым файлом), но, возможно, зритель, связанный с файлом, не может. – derpirscher

+0

Используется так, как в ссылке. Путь и имя файла отлично работают. –