Вахмурка

|
Posted: Thu Aug 24, 2006 10:34 Post subject: |
|
|
2Alextp
Дружище, ты прав, MAX_PATH действительно 260 (см. npptypes.h или WinDef.h). В ужасе просмотрел свои коды - да нет, ни на что не повлияло. Говорила мне мама: сомневайся даже в очевидном!
К теме. Вот какой скрипт PowerPro я сляпал:
Code: |
local Name = "abcdefghijklmnopqrstuvwxyz-123"
local Long, i
for(i = 0; i < 8; i++)
Long = Long ++ Name
endfor
Long = "f:\" ++ Long ++ "01234567890.txt"
local Hand = file.open(Long, "w")
file.writeline(Hand, Long)
file.writeline(Hand, length(Long))
file.writeline(Hand, length(file.nametype(Long)))
file.close(Hand)
|
Нетрудно видеть, что полное имя файла содержит 255 символов. При попытке добавить хотя бы один символ к имени PowerPro отказывается его создавать (отрицательный дескриптор). Разумеется, при любой меньшей длине проблем никаких.
Создавал я его на Zip-дискете, чтобы в случае "неудаляемости" файла тупо ее отформатировать.
Что оказалось:
1) На Зипе все замечательно: создается, просматривается, загружается на редактирование;
2) При копировании на жесткий диск (что FAT16, что NTFS) имя файла (без пути) усекается до 245 смиволов, считая с начала. То есть пропадает расширение и еще 6 символов (последние символы имени "1234";
3) Проводник не имеет никаких проблем с таким файлом. Имя высвечивается полностью;
4) В ТС файл открывается Листером и текстовым редактором, а вот удаление... вызывает ошибку write protection! Для удаления надо выключить режим длинных имен;
5) Попытка переименовать такой файл в ТС проходит без проблем, если общее число символов не возрастает. Совершенно корректно проходит переименование удалением 4-х символов и вставкой ".txt" - файл приобретает текстовую иконку и все соответствующие свойства.
6) Потом я осмелел и создал такой файл на винте (FAT16). Вышло:
путь: 14 символов;
имя: 241 символ;
".txt": 4 символа.
Итого: 259 символов.
7) Для NTFS то же самое, путь на символ длиннее, имя на символ короче;
8 ) Наконец, дискета. Получилось максимальная длина полного имени 258 символов (3+251+4).
9) И, наконец, флешка: то же, что и дискета. При копировании с флешки на винч имя усекается до 244 символов (а не 245, как при копировании с зипа).
На этом носители у меня кончились.
Выводы: максимальная длина "только имя (без пути и расширения)/полное имя" составляет в символах:
Zip: 248/255
Винч (любая ФС): 241/259
Дискета и флешка: 251/258
При копировании тоже числа разные.
Забавно, на следующий день результаты были несколько иные (на 2-3 символа).
Итак, разброс незначителен, но он имеет место. Предлагаю знатокам файловых систем, таблиц размещения и прочих вопросов высказать свои соображения. Например, за рамками исследования остался вопрос: какова максимальная длина имени файла, который ТС может удалить без переключения в режим 8.3? _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|