Конечно же через WinAPI:
1) Куча флагов, для разных ситуаций.
2) Проецируемые в память файлы.
3) Удобнее обрабатывать возможные ошибки.
4) Логично предположить, что в Виндовс эти функции использовать более правильно чем другие.
5) Кроссплатформенность, кроссплатформенность... до неё надо дожить сначала.
ХОБ-Гоблин
> Проецируемые в память файлы.
а это тут причем ???
Nomad
> CreateFileW, хочу заметить.
почему именно W я не понял ?? - кто то сказал что приложение юникодовое ?? тем более там условная компиляция от макросов настройках проекта зависит
asvp
> Ниже WinAPI нет других функции по работе с файлами
ну почему же можно напрямую к винчу обратится и вычитать файловую систему и файлы - это ещё быстрее бгг :)))))))
ЗЫ
в данной теме не советую канеш - эт я пошутил
fsmoke
Ниже есть, конечно - это режим ядра. Можно хоть свой драйвер написать - быстрее будет. Я провел черту для себя - самый низ это WinAPI (есть правда Rtl... функции), а ниже тока режим ядра. А туда я лезть не хочу.
Дополнение:
Есть правда еще один фокус. Н-р, функции WinAPI по работе с кучей работают через функции распределения виртуальной памяти тойже самой WinAPI. Если самому рулить кучей, то получается быстрее. Возможно и функции по работе с файлами работают через какие-нить функции той же WinAPI, но я не юзал.
fsmoke
> а это тут причем ???
Там нужен дескриптор от CreateFileW.
fsmoke
к слову, желательнее использовать везде *W, большая часть WinApi реализует только эти функции, а *A функции это обертки над *W с предварительной конвертацией в юникод
ХОБ-Гоблин
> к слову, желательнее использовать везде *W, большая часть WinApi реализует
> только эти функции, а *A функции это обертки над *W с предварительной
> конвертацией в юникод
Это интересно. Надо проюзать.
Спасибо всем за ответы!
>>и работай как с блоком данных в памяти. проще, удобней и тд...
Ага, про гранулярность аллокации памяти не забыл?
GiSberg
> если проект только под Виндовс то используй
> CreateFile
> CreateFileMapping
> MapViewOfFile
> GetFileSize
>
> и работай как с блоком данных в памяти. проще, удобней и тд...
Эти функции не позволяют увеличивать размер файла (т.е. дописывать его). Ну а "только при чтении" - точто надо. Бестрее чем ReadFile.
Hartmann
> Ага, про гранулярность аллокации памяти не забыл?
А это тут причем.
>>А это тут причем.
оффсет в MapViewOfFile сможешь ставить только по гранулярности памяти
GiSberg
> если проект только под Виндовс то используй
> CreateFile
> CreateFileMapping
> MapViewOfFile
> GetFileSize
>
> и работай как с блоком данных в памяти. проще, удобней и тд...
До тех пор когда адресное пространство не окажется полностью засрано этими удобными блоками.
Тема в архиве.