天天看點

如何設定檔案的大小

一種方法是使用fseek到你想要的大小,然後随便寫上一個什麼位元組。

代碼如下:

FILE *fp = fopen("test1.txt","w");

nRetCode = fseek(fp, 1000, SEEK_END);

nRetCode = fwrite("hello", 5, 1, fp);

檔案的大小會增加1005。

fseek函數從其源代碼可以知道内部調用了系統API:SetFilePointer()。

第二種就是使用filemapping:

Windows下先用CreateFile建立一個0位元組的檔案或者打開一個檔案,

再用CreateFileMapping建立檔案映射核心對象并傳遞PAGE_READWRITE标志,

在函數的dwMaxumumSizeHigh和dwMaximumSizeLow中傳遞你想設定的檔案大小,

系統會自動擴充該檔案的大小以和你傳遞的參數比對,進而使你的磁盤檔案變大!

還可以調用_chsize(int fd,long size)函數直接改變。參數fd是檔案描述符。當使用FILE結構時,FILE中的_file成員就是其檔案描述符。注意,這個函數内部首先将檔案指針設定到檔案尾,然後配置設定一段堆空間,将其填0後,将其寫入檔案,直到寫到所要求的大小。這種方法就是不斷寫0而已。