Подскажите, плз, как найти предыдущий файл в каталоге?
Как найти следующий — это понятно:
FindFirstFile, FindNextFile.
А вот как предыдущий?
Неужели придётся пробегаться с самого начала до текущего файла
и брать предыдущий?
Или перед загрузкой первого файла составить массив файлов?
А если в каталоге файлов так эндак 5000?
Это сколько же памяти отожрётся?
И ещё как бы на FAT файлы искать в алфавитном порядке, а то:
=== MSDN ===
With FAT file systems, the names are returned in the order the
files were written to the disk, which may or may not be in
alphabetical order.
============
Чувствую, всетаки придется составлять список файлов.
А может есть более другой вариант?
> Подскажите, плз, как найти предыдущий файл в каталоге? > Как найти следующий — это понятно: FindFirstFile, FindNextFile. > А вот как предыдущий?
Перед вызовом FindNextFile сохранить имя найденного файла. А после вызова FindNextFile он станет предыдущим.
> Или перед загрузкой первого файла составить массив файлов? > А если в каталоге файлов так эндак 5000? > Это сколько же памяти отожрётся?
5000 * MAX_PATH = 5000 * 260 = 1 300 000 bytes. Не так уж много.
Здравствуйте, Admiral, Вы писали:
>> Подскажите, плз, как найти предыдущий файл в каталоге? >> Как найти следующий — это понятно: FindFirstFile, FindNextFile. >> А вот как предыдущий?
A>Перед вызовом FindNextFile сохранить имя найденного файла. А после вызова FindNextFile он станет предыдущим.
Чем отвечать как попало, лучше вообще не отвечать.
Вы вопрос читали внимательно?
>> Или перед загрузкой первого файла составить массив файлов? >> А если в каталоге файлов так эндак 5000? >> Это сколько же памяти отожрётся?
A>5000 * MAX_PATH = 5000 * 260 = 1 300 000 bytes. Не так уж много.
А если и спользовать Unicode и NT-шное ограничение в 32,000 wide characters, т.е. пока это 64000 байт?
5000 * 64000 = 320 000 000... это для Вас нормально?
Здравствуйте, BurBOT, Вы писали:
A>>5000 * MAX_PATH = 5000 * 260 = 1 300 000 bytes. Не так уж много.
BBO>А если и спользовать Unicode и NT-шное ограничение в 32,000 wide characters, т.е. пока это 64000 байт?
32000 wide characters это на весь путь. Длина имени файла не может быть больше величины, сообщаемой в параметре lpMaximumComponentLength при вызове GetVolumeInformation. Если мне память не изменяет, для NTFS там возвращается 255.
AF>32000 wide characters это на весь путь. Длина имени файла не может быть больше величины, сообщаемой в параметре lpMaximumComponentLength при вызове GetVolumeInformation. Если мне память не изменяет, для NTFS там возвращается 255.
да
File Name
A repeatable attribute for both long and short file names. The long name of the file can be up to 255 Unicode characters. The short name is the 8.3, case-insensitive name for the file. Additional names, or hard links, required by POSIX can be included as additional file name attributes.
вообще говоря сортировка — внутреннее дело FSD
Improved file attribute indexing. NTFS includes the ability to index file attributes as a means of locating and sorting multiple files that share similar data quickly. You can index file names in FAT32 and FAT16 file systems, but not attributes. Also, the file system does not have the functionality to sort the indexed FAT32 and FAT16 file names.
короче говоря сортировать придется самому в общем виде
другой вариант это:
написать фильтр файловой системы который будет автоматом от любого нижнего FSD рез-т сортировать
но это очень тяжело будет сделать (да и зачем? проще все же список через FindXxxFile ИМХО)
... << RSDN@Home 1.1 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Здравствуйте, hellas, Вы писали:
H>Если не нужна сильная производительность, то можно сделать временный файл на диске и записывать туда данную в нужном формате, например
H>... H>file00023=myfile.txt H>file00024=index.html H>file00025=usver32.dll H>...
H>И читать из него
H>Пока писал, вспомнил, что .ini файлы имеют такую-же структуру, так что ничего изобретать не придётся (GetProvateProfileString кажется...)
А разве скорость записи/чтения в физический файл быстрее, чем в память?
Мне кажется, что это очень плохой вариант.
Здравствуйте, Valerio, Вы писали:
V>другой вариант это: V>написать фильтр файловой системы который будет автоматом от любого нижнего FSD рез-т сортировать V>но это очень тяжело будет сделать (да и зачем? проще все же список через FindXxxFile ИМХО)
Я тут поковырялся и решил, что пока список в памяти будет наиболее оптимальным вариантом.
Только вот, наверно, составлять его придётся в другом треде, дабы основному процессу не мешать.
Здравствуйте, BurBOT, Вы писали:
BBO>А разве скорость записи/чтения в физический файл быстрее, чем в память? BBO>Мне кажется, что это очень плохой вариант.
Так я это и имел ввиду!
This software required Windows 95 or better...
So I installed Linux