#include<stdio.h>
const long len = 4*1024*1024;
char buf[len];
int main()
{
FILE *f = fopen("file.ext", "rb");
if(f) {
fseek(f, len, SEEK_SET);
fread(buf, len, 1, f);
fclose(f);
}
return 0;
}
Как прочитать/записать кусок файла весом больше 4 гб?
Я программер начинающий, с VC ещё не работал...
Вот собственно задача:
Есть файл некоторого размера (допустим, 1 гб).
Нужно прочитать в буфер первый кусок, обработать, потом третий кусок, потом пятый, и т.д.
(Размер куска, к примеру, 4 мб)
И с записью тоже самое.
Помогите плз!
Заранее спасибо!
А в чем вопрос?
я знаю fopen/fclose :D (ну там fputc, fgetc, fputs, fgets)
но там вроди ограничения на размер файла?
к тому же нада прочитать определённый кусок данных...
допустим 4194304-8388607 байты (вторые 4 мб)
http://forum.codenet.ru/showthread.php?t=15493 - там помоему такая же проблема, но так никто и не ответил...
Если же пишете под Windows - можно воспользоваться ее API для таких вещей:
CreateFile
ReadFileEx
WriteFileEx
SetFilePointerEx
Примерно так:
Вот у меня как раз интерес к файлам >4Гб под Win,VC :)
Разумеется, такие файлы могут быть только в NTFS, запись и чтение можно делать впринципи любыми проедставленными выше методами плюс функции с целочисленным хэндлом (_write,_read) и STL.
В моей практике встречается такая ситуация, когда нужно переместить курсор по абсолютному смещению в файле. Для этого я использую функции типа *seeki64. А вот в реализации STL для VC насколько я понимаю такого не сделать, типы off_type и pos_type - 32-х битные. А хотелось бы использовать стандартную библиотеку...:( Можно ли что-нибудь придумать?
В частности:
CreateFileMapping
MapViewOfFile