View previous topic :: View next topic |
Author |
Message |
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Mon Aug 21, 2006 10:11 Post subject: |
|
|
2Вахмурка
Quote: | А разве там не все числа есть степени двойки? На низком уровне ведь это должно быть представлено целым числом бит. Если 260, значит, 8 бит чуточку не хватает. То есть используется 9, так? |
Нет, наверное не так, используется 16 или даже 32 бит. Скорее всего. Т.к. процессор все равно работает с 32 бит словами, экономить биты резона нет. Это в памяти. А на диске - может быть и 9, кто знает как устроена FAT/NTFS.
Quote: | Что касается С++, то там константа MAX_PATH |
Нет, я про Win API |
|
Back to top |
|
|
Ник
Joined: 15 Dec 2004 Posts: 1256 Location: Москва
|
(Separately) Posted: Mon Aug 21, 2006 10:23 Post subject: |
|
|
Короче, умники:
При экспорте из Бата:
212 - длина имени файла при наличии точки и 4 знаков в расширении - предел.
213, 214 - что-то, где-то работает иногда.
215 - стоп-машина
Если взять файл с именем длиной 212 и руками в ТК добавлять символы (хоть цифры, хоть русские буквы) - всё работает до 240 как минимум.
Теория суха мой друг, а древо жизни (практики) вечно зеленеет... _________________ Xubuntu 20.10 |
|
Back to top |
|
|
Parcan
Joined: 15 Dec 2004 Posts: 398 Location: Russian
|
(Separately) Posted: Mon Aug 21, 2006 18:07 Post subject: |
|
|
возможно еще надо учитывать длину пути до этого файла
а так когда я разбирался как храняться имена в tar архивах, то если мне не изменяет память я пытался создавал файлы в корне диска с именами менее и более 512 (0x200) символов и без расширения, что бы посмотреть как они там в структуре сохраняться, вот только не помню какая длина создаваемого фала в тотале оказалась максимальной, но все они были текстовые и никаких проблем с ними не возникало.
блин проверил максимум 255 символов без расширения, но мне кажеться что в тс 6.54 или 6.54а мне удавалось создать больший файл |
|
Back to top |
|
|
Ник
Joined: 15 Dec 2004 Posts: 1256 Location: Москва
|
(Separately) Posted: Mon Aug 21, 2006 19:29 Post subject: |
|
|
Насколько я помню, существует ограничение на полный путь + имя + расширение... _________________ Xubuntu 20.10 |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
(Separately) 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
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
|
Ник
Joined: 15 Dec 2004 Posts: 1256 Location: Москва
|
(Separately) Posted: Thu Aug 24, 2006 10:58 Post subject: |
|
|
Quote: | какова максимальная длина имени файла, который ТС может удалить без переключения в режим 8.3 |
255 (или 254) - но в "имя" включается полный путь и имя диска, всё это с разделителями, двоеточиями и слешами... _________________ Xubuntu 20.10 |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
|
Back to top |
|
|
Ник
Joined: 15 Dec 2004 Posts: 1256 Location: Москва
|
(Separately) Posted: Thu Aug 24, 2006 11:37 Post subject: |
|
|
Извините, но Ваши исследования некорректны (ИМХО) - в системах ФАТ16 и ФАТ32 в таблице хранится "полный путь (с именем диска) и имя файла" - поэтому нужно мерять именно их.
Что касается флешки - то там другая файловая система (типа "псевдоФАТ") и что там и к чему - фиг его знает.
НА обычных дискетах - ФАТ12.
На "ЗИП"-е (?это Вы имеете ввиду ЗИП-драйв или что?) - третья (не знаю какая)...
В NTFS вообще мастер-тейбл главная - имена хранятся отдельно (при этом, как мне помнится, таблица имён аналогична ФАТ32 - но операции с файлами производятся в первую очередь с помощью мастер-таблицы)... _________________ Xubuntu 20.10 |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
(Separately) Posted: Thu Aug 24, 2006 12:26 Post subject: |
|
|
Ник wrote: | Извините, но Ваши исследования некорректны (ИМХО) - в системах ФАТ16 и ФАТ32 в таблице хранится "полный путь (с именем диска) и имя файла" - поэтому нужно мерять именно их. | Что значит "некорректны"? Чем именно? Я просто провел эксперимент, и предоставил более компетентным лицам делать выводы. Если была ошибка в самом эксперименте, просьба указать конкретнее, где именно.
Quote: | Что касается флешки - то там другая файловая система (типа "псевдоФАТ") и что там и к чему - фиг его знает.
НА обычных дискетах - ФАТ12.
На "ЗИП"-е (?это Вы имеете ввиду ЗИП-драйв или что?) - третья (не знаю какая)... | Да, Zip от Iomega (на 100 Мб). Анахронизм, понимаю, но работает, зараза...
Quote: | В NTFS вообще мастер-тейбл главная - имена хранятся отдельно (при этом, как мне помнится, таблица имён аналогична ФАТ32 - но операции с файлами производятся в первую очередь с помощью мастер-таблицы)... | Вот именно этого, дорогие теоретики, я от вас и ждал _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
|
Ник
Joined: 15 Dec 2004 Posts: 1256 Location: Москва
|
(Separately) Posted: Thu Aug 24, 2006 14:03 Post subject: |
|
|
2Вахмурка:
Я имел ввиду, что в полное имя нужно включать и имя диска и двоеточие - из Вашего поста я не понял - так Вы делали или имя диска с двоеточием пропускали при подсчёте? _________________ Xubuntu 20.10 |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
(Separately) Posted: Thu Aug 24, 2006 14:53 Post subject: |
|
|
Под "полным именем" понимается:
путь + имя + расширение.
Например, минимальная длина пути составляет 3 символа (буква + двоеточие + \), имени - 1 символ, расширения - 0 (его может не быть). Например, именно эти слагаемые я имел в виду здесь:
Quote: | Получилось максимальная длина полного имени 258 символов (3+251+4) |
_________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
|
Ник
Joined: 15 Dec 2004 Posts: 1256 Location: Москва
|
(Separately) Posted: Thu Aug 24, 2006 14:57 Post subject: |
|
|
А точку между именем и расширением Вы считали? Она тоже значима!
А если имени нет - а сразу точка и расширение?
Разница между именем и расширением не так жестка, как хотелось бы _________________ Xubuntu 20.10 |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
(Separately) Posted: Thu Aug 24, 2006 15:11 Post subject: |
|
|
Quote: | А точку между именем и расширением Вы считали? Она тоже значима! |
Кто-то из нас очень невнимателен . Последние "+4" - это ".txt". Мне казалось, я все понятно написал.
Quote: | А если имени нет - а сразу точка и расширение? |
В свое время подобные эксперименты привели к созданию неудаляемого файла. Больше не хочется. Уж сколько раз я эти операционки таким образом ронял... _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
|
Zoooom
Joined: 28 Dec 2004 Posts: 45
|
(Separately) Posted: Sun Aug 27, 2006 23:29 Post subject: |
|
|
был у меня глюк когда создались волженные каталоги максималной глубины: D:\install\123\123\123.....\123\123\123\a.txt
с файлом ничего нельзя сделать но если переименовать пару промежуточных папок "123"->"1"(т е сократить путь) то все операции прокатывают на ура(юзал тока тотал, удалять прововал всем подряд) |
|
Back to top |
|
|
|