Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Windows > Длинный полный путь файла (> 255 символов).


Автор: kamre 27.5.2008, 11:49
Имеется файл на флэшке (или в zip архиве) полный путь которого при копировании (извлечении из архива) получается больше 255 символов.  Пытаюсь его скопировать с флэшки, но не получается и выдает ошибку:
user posted image
Просто скопировать файл с флэшки в корень диска можно. Но даже потом из корня перенести в нужную директорию не дает.

Единственный способ, который я нашел: создание аналогичной структуры дерева директорий, но с короткими именами, переименование директорий и файлов. При этом все вроде как начинает работать. Только вот такое дерево больше никуда не копируется.

Подскажите, почему так происходит? Ограничения win32 API?
Нельзя ли обойти как-то это и по нормальному копировать?


Автор: Olegan 27.5.2008, 15:29
хм...
у меня все нормально копируется и работается... smile 
 smile 

Автор: kamre 27.5.2008, 16:48
Цитата(Olegan @ 27.5.2008,  15:29)
хм...
у меня все нормально копируется и работается... smile 
 smile

Мне нужно не просто вытащить сам файл из архива, а вместе со всем деревом директорий.
У вас именно это получилось? Какой программой пользовались? У меня 7z выдает ошибку, а встроенный в explorer просто молча не извлекает файл...


Автор: Akina 27.5.2008, 17:56
На какую файловую систему извлекаете? Под какой версией ОС?
PS. У меня тоже никаких проблем не возникло. Более того - я извлекал это все в каталог, полное имя которого само по себе порядка 150 символов.

Автор: kamre 27.5.2008, 18:16
Цитата(Akina @ 27.5.2008,  17:56)
На какую файловую систему извлекаете? Под какой версией ОС?
PS. У меня тоже никаких проблем не возникло. Более того - я извлекал это все в каталог, полное имя которого само по себе порядка 150 символов.

Дома ноутбук с WinXP Home Edition SP2, файловая система ntfs (сконвертированная из fat32 через convert).  На работе win2k с изначально отформатированной в ntfs файловой системой, там аналогичная проблема.

"это все" - с полным путем?



Автор: Akina 27.5.2008, 18:23
Цитата(kamre @  27.5.2008,  19:16 Найти цитируемый пост)
"это все" - с полным путем?

Да. См. аттач. 
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
Цитата(Akina @  27.5.2008,  18:23 Найти цитируемый пост)
PS. Для NTFS ограничение длины пути составляет 260 символов. 

Не правильно! Теоретически длина пути неограничена. Практически - MAX_PATH=260 символов, что и используется при написании программ. Но! Это можно обойти используя префикс \\?\ посему пользуя командную строку можно сделать так:
cp \\?\C:\big_path c:\where  

Автор: Akina 28.5.2008, 08:36
Цитата(FullArcticFox @  28.5.2008,  04:31 Найти цитируемый пост)
Не правильно! Теоретически длина пути неограничена.

Если точно - длина пути в файловой системе NTFS ограничена величиной 32 кб, а вот на нее накладывается дополнительное ограничение операционной системы. и остается 260 байт.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)