| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS Windows > Длинный полный путь файла (> 255 символов). |
| Автор: kamre 27.5.2008, 11:49 |
Имеется файл на флэшке (или в zip архиве) полный путь которого при копировании (извлечении из архива) получается больше 255 символов. Пытаюсь его скопировать с флэшки, но не получается и выдает ошибку:![]() Просто скопировать файл с флэшки в корень диска можно. Но даже потом из корня перенести в нужную директорию не дает. Единственный способ, который я нашел: создание аналогичной структуры дерева директорий, но с короткими именами, переименование директорий и файлов. При этом все вроде как начинает работать. Только вот такое дерево больше никуда не копируется. Подскажите, почему так происходит? Ограничения win32 API? Нельзя ли обойти как-то это и по нормальному копировать? |
| Автор: Olegan 27.5.2008, 15:29 |
| хм... у меня все нормально копируется и работается... |
| Автор: kamre 27.5.2008, 16:48 | ||
Мне нужно не просто вытащить сам файл из архива, а вместе со всем деревом директорий. У вас именно это получилось? Какой программой пользовались? У меня 7z выдает ошибку, а встроенный в explorer просто молча не извлекает файл... |
| Автор: Akina 27.5.2008, 17:56 |
| На какую файловую систему извлекаете? Под какой версией ОС? PS. У меня тоже никаких проблем не возникло. Более того - я извлекал это все в каталог, полное имя которого само по себе порядка 150 символов. |
| Автор: kamre 27.5.2008, 18:16 | ||
Дома ноутбук с WinXP Home Edition SP2, файловая система ntfs (сконвертированная из fat32 через convert). На работе win2k с изначально отформатированной в ntfs файловой системой, там аналогичная проблема. "это все" - с полным путем? |
| Автор: Akina 27.5.2008, 18:23 |
Да. См. аттач. PS. Для NTFS ограничение длины пути составляет 260 символов. |
| Автор: kamre 27.5.2008, 19:28 |
| Да, действительно, в корень D:\ и в D:\Backup извлекается это. Что-то у меня перепуталось и я куда-то глубже пытался положить. Но, к сожалению, это еще не самый длинный путь, который нужен. Даже в корень не удается распаковать весь архив, есть файлы с длиной пути больше 260. Неужели это ограничение нельзя обойти? Причем, если даже запихать с переименованием, то потом все равно не читаются файлы... Вроде бы в википедии написано, что "Maximum path length: An absolute path may be up to 32767 characters long; a relative path is limited to 255 characters." |
| Автор: FullArcticFox 28.5.2008, 03:31 |
Не правильно! Теоретически длина пути неограничена. Практически - MAX_PATH=260 символов, что и используется при написании программ. Но! Это можно обойти используя префикс \\?\ посему пользуя командную строку можно сделать так: cp \\?\C:\big_path c:\where |
| Автор: Akina 28.5.2008, 08:36 |
Если точно - длина пути в файловой системе NTFS ограничена величиной 32 кб, а вот на нее накладывается дополнительное ограничение операционной системы. и остается 260 байт. |