Как быстро создать большие файлы в 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;
}
Другие вопросы по тегам