Поиск предыдущего файла
От: BurBOT BurДОМ
Дата: 29.07.03 06:23
Оценка:
Уважаемые!

Подскажите, плз, как найти предыдущий файл в каталоге?

Как найти следующий — это понятно:
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.
============

Чувствую, всетаки придется составлять список файлов.
А может есть более другой вариант?

Какие есть идеи?
Re: Поиск предыдущего файла
От: Admiral Украина  
Дата: 30.07.03 16:58
Оценка:
> Подскажите, плз, как найти предыдущий файл в каталоге?
> Как найти следующий — это понятно: FindFirstFile, FindNextFile.
> А вот как предыдущий?

Перед вызовом FindNextFile сохранить имя найденного файла. А после вызова FindNextFile он станет предыдущим.

> Или перед загрузкой первого файла составить массив файлов?

> А если в каталоге файлов так эндак 5000?
> Это сколько же памяти отожрётся?

5000 * MAX_PATH = 5000 * 260 = 1 300 000 bytes. Не так уж много.
Posted via RSDN NNTP Server 1.7 beta
Re[2]: Поиск предыдущего файла
От: BurBOT BurДОМ
Дата: 01.08.03 02:42
Оценка:
Здравствуйте, 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... это для Вас нормально?
Re[3]: Поиск предыдущего файла
От: Alex Fedotov США  
Дата: 01.08.03 02:49
Оценка:
Здравствуйте, 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.
-- Alex Fedotov
Re: Поиск предыдущего файла
От: hellas Россия  
Дата: 01.08.03 04:09
Оценка:
Здравствуйте, BurBOT, Вы писали:

BBO>Уважаемые!


BBO>Подскажите, плз, как найти предыдущий файл в каталоге?


Если не нужна сильная производительность, то можно сделать временный файл на диске и записывать туда данную в нужном формате, например

...
file00023=myfile.txt
file00024=index.html
file00025=usver32.dll
...

И читать из него

Пока писал, вспомнил, что .ini файлы имеют такую-же структуру, так что ничего изобретать не придётся (GetProvateProfileString кажется...)
This software required Windows 95 or better...
So I installed Linux
Re[4]: Поиск предыдущего файла
От: Valerio Россия linkedin.com/in/boronin
Дата: 01.08.03 04:52
Оценка:
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.
Re[2]: Поиск предыдущего файла
От: BurBOT BurДОМ
Дата: 01.08.03 09:03
Оценка:
Здравствуйте, hellas, Вы писали:

H>Если не нужна сильная производительность, то можно сделать временный файл на диске и записывать туда данную в нужном формате, например


H>...

H>file00023=myfile.txt
H>file00024=index.html
H>file00025=usver32.dll
H>...

H>И читать из него


H>Пока писал, вспомнил, что .ini файлы имеют такую-же структуру, так что ничего изобретать не придётся (GetProvateProfileString кажется...)


А разве скорость записи/чтения в физический файл быстрее, чем в память?
Мне кажется, что это очень плохой вариант.
Re[5]: Поиск предыдущего файла
От: BurBOT BurДОМ
Дата: 01.08.03 09:07
Оценка:
Здравствуйте, Valerio, Вы писали:

V>другой вариант это:

V>написать фильтр файловой системы который будет автоматом от любого нижнего FSD рез-т сортировать
V>но это очень тяжело будет сделать (да и зачем? проще все же список через FindXxxFile ИМХО)

Я тут поковырялся и решил, что пока список в памяти будет наиболее оптимальным вариантом.
Только вот, наверно, составлять его придётся в другом треде, дабы основному процессу не мешать.
Re[3]: Поиск предыдущего файла
От: hellas Россия  
Дата: 01.08.03 09:22
Оценка:
Здравствуйте, BurBOT, Вы писали:

BBO>А разве скорость записи/чтения в физический файл быстрее, чем в память?

BBO>Мне кажется, что это очень плохой вариант.

Так я это и имел ввиду!
This software required Windows 95 or better...
So I installed Linux
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.