在磁碟上給檔案快速預留一大片空間

2021-06-18 18:02:11 字數 957 閱讀 5823

在有多個執行緒操作乙個磁碟的時候,在建立檔案的時候需要先把檔案撐大,把空間佔住,後續在向檔案寫入。

windows下:

方法1:setendoffile

方法2:seek到檔案大小的位置,然後寫入乙個0。

linux下:

如果是ext3用:posix_fallocate

如果是ext4用:fallocate

核心**:

handle hopenfile =null;     hopenfile = (handle)createfile(

"d:\\a.txt

", generic_read |generic_write, file_share_read, null, create_new, null, null);     

longret;     

longlow = 

1;     

longhigh = 

2;     ret = setfilepointer (hopenfile, low, &high, file_begin);     

if(ret ==hfile_error)          setendoffile(hopenfile);     closehandle(hopenfile);

其中在setfilepointer中low代表檔案大小的低32位,high代表高32位,所以最大可建立2^64大小的檔案。

也可以試著使用:

cfile file;     file.open(

"f:\\result.txt

", cfile::modereadwrite);     file.setlength (

0x7fffffff);     file.close ();

但是只能建立最大2^32的檔案

ntfs的試過可以,但fat32的速度很慢

磁碟分割槽,檔案在磁碟上的儲存

一 磁碟物理結構 碟片 機械手臂 磁頭 主軸馬達 磁碟構成描述 磁軌 扇區 柱面 主引導扇區 0磁軌0柱面1扇區,分為 1 主引導記錄mbr 2 分割槽表dpt共64位元組 每個分割槽資訊佔16位元組,故最多四個分割槽 想要實現更多分割槽,可利用擴充套件分割槽 指向乙個更大空間存更多分割槽資訊 建立...

資料在磁碟上的布局

dos分割槽是目前常用的一種分割槽方式,其磁碟資料分布描述如下 第乙個扇區是主引導分割槽mbr,mbr描述了磁碟分割槽的結構,mbr的內容包括引導 和分割槽表資訊,最後以標誌0xaa55結尾。mbr中的引導 是在bios啟動之後首先得到執行的 通常引導 會檢查磁碟分割槽表,並且判斷哪個分割槽是啟動分...

倒排表在磁碟上的布局

由於倒排表的大小一般都很大,所以大部分搜尋引擎都將倒排表儲存在磁碟上。下圖是乙個倒排表的總體結構布局 磁碟是由乙個個資料塊 block,大小固定,例如64kb 組成的。倒排表中的乙個列表 乙個單詞對應的列表 可能跨越多個block,開始於某個block中的某處,結束於另外乙個block的某處。blo...