![]() |
Ошибка открытия файла из-за длинного полного имени файла
Windows XP и 7, Visual Studio 10 и 12. В программе на C# при открытии файла doc
Код:
doc = word.Documents.Open(ref filename, ref confConv, ref readOnly); |
Цитата:
c# - How to deal with files with a name longer than 259 characters? - Stack Overflow 1. Попробовать использовать префикс «\\?\» в пути. 2. Попробовать перевести длинное имя в короткое формата 8.3 и использовать его (если это допустимо по сценарию). Что из этого сработает — наверняка сказать не могу. Смотрите, пробуйте. |
Спасибо большое за ответ. Попробую.
|
К сожалению, не получилось решить проблему с длинными именами. Добавление в начало имени файла \\?\ привело к тому, что строки перестали находится в файлах, которые раньше находились. С короткими именами тоже у меня не получилось, наверное, что-то делаю неправильно. Прикрепил проект и архив с директориями, имитирующий длинные имена файлов.
|
tumanovalex, как я понимаю, Вы пытаетесь работать с Word посредством Automation, и именно там происходит затык/падение при попытке открытия файла с длинным путём, так?
|
Именно так
|
Тогда, насколько я понимаю, увы и ах. С префиксом \\?\ отказываются работать и .Net, и Microsoft Office (по крайней мере, имеющийся у меня 2003-й). И там, и там действует ограничение по MAX_PATH - 1.
С короткими же именами происходит следующее: экземпляр сервера Automation создаётся, документ по указанному «короткому» (8.3) пути открывается, а затем рушится установленная связь клиент Automation — сервер Automation, приложение-клиент Automation падает с ошибкой времени исполнения, а сервер Automation, в данном случае, Microsoft Word, с открытым в нём документом остаётся без видимых окон «висеть» процессом на заднем плане. Короткий пример на VB.Net: Скрытый текст
Код:
Module Module1 ![]() Возможно, конечно, что это просто у меня пальцы кривые. Можно ещё, конечно, поиграться с точками повторной обработки, создавая связь каталогов или символическую ссылку на родительскую для документа папку где-нибудь в пути покороче, а затем обращаясь именно через эту новосозданную связь или ссылку к искомому файлу. |
tumanovalex, разбить filename на путь и имя файла, поменять рабочий каталог, открыть документ по имени без пути?
|
Busla, я пробовал и так делать. Что .Net, что Microsoft Word радостно обламываются с той же самой ошибкой чересчур длинного пути.
|
Время: 17:25. |
Время: 17:25.
© OSzone.net 2001-