|
|
|
отображение файла в память
|
|||
|---|---|---|---|
|
#18+
Задача: нужно скопировать один файл в конец другого, используя проецирование файла в память Первое, что приходит в голову: #include <stdio.h> #include <conio.h> #include <windows.h> int main() { // Декларация переменных HANDLE hIn, hOut; HANDLE hInMap, hOutMap; LPSTR pIn, pOut; LPVOID pInFile,pOutFile; DWORD FsLow,FsLow2; hIn = CreateFile ("1.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); // Создаем объект отображения файла, используя его размер. hInMap = CreateFileMapping (hIn, NULL, PAGE_READONLY, 0, 0, NULL); // Отображаем первый файл pInFile = MapViewOfFile (hInMap, FILE_MAP_READ, 0, 0, 0); // Получаем размер первого файла FsLow = GetFileSize (hIn, NULL); hOut = CreateFile ("2.txt", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); // Получаем размер второго файла FsLow2 = GetFileSize (hOut, NULL); // Создаем объект отображения файла, используя его размер. hOutMap = CreateFileMapping (hOut, NULL, PAGE_READWRITE, 0,FsLow+FsLow2, NULL); // Отображаем второй файл pOutFile = MapViewOfFile (hOutMap, FILE_MAP_WRITE, 0,0 ,0); pIn = (LPSTR) pInFile; pOut =(LPSTR) pOutFile; int i=0; // Смещаемся в конец второго файла pOut=pOut+FsLow2; // Копируем первый файл в конец второго while (i < FsLow) { *pOut=*pIn; pIn++; pOut++; i++; } // Закрываем все образы и дескрипторы UnmapViewOfFile (pOutFile); UnmapViewOfFile (pInFile); CloseHandle (hOutMap); CloseHandle (hInMap); CloseHandle (hIn); CloseHandle (hOut); return(0) ; } Вопрос: Как перегнать сразу весь файл или по несколько килобайт? while (i < FsLow) { *pOut=*pIn; pIn++; pOut++; i++; } Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2004, 00:42 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32836433&tid=2033955]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 331ms |

| 0 / 0 |
