2013-05-27 3 views
0

파일 시스템 성능에 대한 연구를하고 있는데 C에서 매우 큰 파일을 매우 빠르게 만드는 방법에 대해 매우 혼란 스럽습니다. 기본적으로이 메타 데이터를 가져 와서 저장함으로써 파일 시스템의 폴더와 파일을 다시 만들려고합니다. 파일로. 이것이 추출 과정입니다. 나중에, 이전에 추출한 메타 데이터를 사용하여 이러한 폴더와 파일을 기존의 새로 만든 파일 시스템 (이 경우 ext3)으로 복원하려고합니다.C에서 대용량 파일을 빠르게 만드는 방법은 무엇입니까?

복원 과정에서 이미 모든 폴더를 만들었습니다. 그러나, 나는 파일을 즉시 만드는 방법에 약간 혼란 스럽다. 작성하려는 모든 파일에 대해 파일 크기와 파일 경로가 있습니다. 파일 크기를 매우 빠르게 설정하는 방법에 대해 혼란스러워합니다.

truncate을 사용했지만 파일 시스템의 관점에서 디스크 공간 사용에 영향을 미치지 않는 것 같습니다.

감사합니다.

답변

0

즉시 할 방법이 없습니다.

파일의 각 블록을 디스크에 기록해야하며 특히 큰 파일의 경우 상당한 시간이 걸릴 수 있습니다.

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; 
} 
+0

fclose (fp)도 추가하십시오!^_^ –

+0

추가됨. 반환 값도 제공해야합니다. 감사! –

+0

죄송합니다, @ liuml07 뭔가 이해가 안되요. 우리가 반복 할 때마다 위치를 (1024 * 1024)만큼 앞으로 이동시키고 그 위치에서 그 위치에 문자 "C"를 씁니다. 그 추구들 사이에서 무슨 일이 일어나고 있습니까? ext3은 어떻게 이것을 처리합니까? 파일 시스템 블록이 실제로 데이터없이 할당 되나요? – KZcoding

관련 문제