|
Тема |
Въпрос за писане на файл. |
|
Автор |
geri® (циник) |
|
Публикувано | 02.04.09 22:45 |
|
|
Пичове, срещнах проблем който не ми е ясно как да реша, и питам тук.
Имаме проста ситуация. Трябва да се създаде един 500 мегабайтов файл (а в перспектива ще се качи до 4 гиги), без да се пишат данни вътре, максимално бързо. Обаче в момента когато го затварям системата заспива и диска светва червено толкова време, колкото и трябва за да запише същото количество данни (което ми е целта да избягна). Което за към 4 гиги файл на флешка е към четвърт час.
Примерът е пределно прост:
FILE* f = fopen (fname, "wb");
fseek (f, 500000000, 0);
fwrite (&f, 1, 1, f);
fclose (f);
и с Виндовски щуротии:
HANDLE h = CreateFile ("myfile",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0, NULL);
SetFilePointer(h,500000000,NULL,FILE_BEGIN);
SetEndOfFile (h);
CloseHandle (h);
Действието се развива под Windows XP SP3. Няма значение дали диска е под NTFS или FAT.
Подозрението е че OS-а се грижи да си запълни нещата с нули до края на файла, демек това е някаква фича на операционната система. Имате ли някакви идеи как това може да се изключи поне временно за да се реши проблемът
|
| |
|
|
|