Как быстро создать большие файлы в C?
Я занимаюсь исследованием производительности файловой системы, и я нахожусь в тупике о том, как очень быстро создать очень большой файл в C. По сути, я пытаюсь воссоздать папки и файлы файловой системы, беря эти метаданные и сохраняя их в файл. Это процесс извлечения. Позже я хочу восстановить эти папки и файлы в существующей свежеприготовленной файловой системе (в данном случае ext3) с использованием ранее извлеченных метаданных.
В процессе восстановления мне уже удалось создать все папки. Тем не менее, я немного запутался в том, как создавать файлы мгновенно. Для каждого файла, который я хочу создать, у меня есть размер файла и путь к файлу. Я просто запутался в том, как очень быстро установить размер файла.
Я использовал усечение, но это, похоже, не влияет на использование дискового пространства с точки зрения файловой системы.
Спасибо!
2 ответа
Нет способа сделать это мгновенно.
Вам необходимо записать каждый блок файла на диск, и это займет значительный период времени, особенно для большого файла.
#include < stdio.h >
#include < stdlib.h >
int main() {
int i;
FILE *fp;
fp=fopen("bigfakefile.txt","w");
for(i=0;i<(1024*1024);i++) {
fseek(fp,(1024*1024), SEEK_CUR);
fprintf(fp,"C");
}
fclose(fp);
return 0;
}