青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

行進中開火

C++夜未眠

快速擴展文件大小

首先轉(zhuǎn)一段博文:Linux下快速擴展文件大小

 在實際的開發(fā)過程中,我們可能需要在文件生成時就立即將文件更改為指定的大小,以便于后續(xù)簡化對文件的并發(fā)操作,
這一點在各類的下載工具中有很好的體現(xiàn)。
    要滿足這一需求,通常可以使用的最直觀的方式是:生成文件后,通過循環(huán)向文件中寫入任意數(shù)據(jù),直到文件大小達到預(yù)期的大小。
對于較小的文件,這種方法可以接受,但是如果文件大小過大,那么這種方法就顯得不夠簡潔且低效。
    這里介紹一種高效且簡單的方法,基于函數(shù)"lseek"。
    執(zhí)行"man lseek"之后,我們可以看到關(guān)于lseek特性的關(guān)鍵信息,如下:
    The lseek() function shall allow the file offset to be set beyond the end of the existing data in the file. 
    If data is later written at this point, subsequent reads of data in the gap shall return bytes with the 
    value 0 until data is actually written into the gap.
    The lseek() function shall not, by itself, extend the size of a file.

簡單的總結(jié)就是:
1. lseek 函數(shù)本身不會擴展文件的大小.
2. lseek 允許文件的偏移值超過文件的末端,如果下一次在這個偏移點寫入數(shù)據(jù),那么在偏移之前的文件末端與偏移點之間的數(shù)據(jù)將會自動填充為0。

了解了上面幾點,大家應(yīng)該想到了擴展文件大小將是一件多么簡潔高效的事情了:)  

那么,簡單的步驟如下


1. lseek( iFileHandle , 0 , SEEK_CUR ); //保存文件指針的當(dāng)前位置以便于在擴展文件大小后恢復(fù)到當(dāng)前位置 2. lseek( iFileHandle , iMoveOffset , SEEK_SET ); 3. write( iFileHandle , " " , WRITE_BYTE_COUNT ); //寫入一個字節(jié)的數(shù)據(jù),完成對文件大小的更改 4. lseek( iFileHandle , iCurPos , SEEK_SET ); //恢復(fù)文件指針到之前保存的文件位置

實際上,在Windows中的_lseek或者_lseeki64也可以達到相同的目的。MSDN中的描述:

You can use _lseek to reposition the pointer anywhere in a file or beyond the end of the file.


最后,還有一個更好的方法:

int truncate(const char *path, off_t length); 
If the file previously was larger than length, the extra data is discarded. 
If the file was previously shorter than length, its size is increased, and the extended area appears as if it were zero-filled. 
這樣一來,截斷和擴展文件都可以用"truncate"來完成,這樣相對于上面的EnlargeFile就更簡潔了而且基于"truncate"的形式只需要一次系統(tǒng)調(diào)用即可實現(xiàn)相同的效果,效率上也更有優(yōu)勢. 

但是,truncate函數(shù)在Windows中不可以使用。可以使用 SetEndOfFile 來代替。

 

Truncating or Extending Files

An application can truncate or extend a file by calling SetEndOfFile on sets the end-of-file marker to the current position of the file pointer.

Note that when a file is extended, the contents between the old and new end-of-file locations are not defined.

 

The SetEndOfFile function can be used to truncate or extend a file. If the file is extended, the contents of the file between the old end of the file and the new end of the file are not defined.

SetEndOfFile 可以用來擴展文件,當(dāng)一個文件被擴展,被擴展部分,是未被定義的。也就是說,新擴展出來的部分,沒有被付初值,沒有用0填充。

還需要注意一點,

If CreateFileMapping is called to create a file mapping object for hFileUnmapViewOfFile must be called first to unmap all views and call CloseHandle to close the file mapping object before you can call SetEndOfFile.

也就是說,在Mapping狀態(tài)的文件,是不能調(diào)用SetEndOfFile的。

MSDN鏈接:http://msdn.microsoft.com/en-us/library/aa365531(VS.85).aspx

 

 

 

 

posted on 2010-03-03 17:57 Jakcie 閱讀(910) 評論(0)  編輯 收藏 引用 所屬分類: C++ & CLinux & QT

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美精品久久99久久在免费线| 先锋影音网一区二区| 欧美国产免费| 牛牛影视久久网| 玖玖玖免费嫩草在线影院一区| 久久一区视频| 美女精品一区| 欧美日韩国产免费| 国产精品免费看片| 国产欧美午夜| 亚洲国产高清一区| 亚洲视频视频在线| 久久9热精品视频| 国产精品扒开腿爽爽爽视频| 国产精品v亚洲精品v日韩精品| 国产精品一区视频| 亚洲第一页中文字幕| 日韩图片一区| 欧美伊人久久久久久久久影院 | 国产欧美精品xxxx另类| 国产主播在线一区| 99re在线精品| 久热国产精品视频| 一本色道久久综合亚洲精品不| 亚洲欧美日本另类| 欧美国产三区| 狠狠色综合色综合网络| 亚洲一级黄色| 亚洲国产精品一区在线观看不卡 | 久久狠狠婷婷| 国产精品s色| 亚洲久久视频| 浪潮色综合久久天堂| 一区二区成人精品| 免费不卡中文字幕视频| 国产日韩欧美视频| 亚洲在线免费观看| 亚洲欧洲久久| 农夫在线精品视频免费观看| 国产伦精品一区二区三区四区免费| 亚洲日本中文字幕免费在线不卡| 久久成人资源| 亚洲永久免费观看| 欧美亚洲第一区| 一本大道久久a久久精品综合| 久久综合色8888| 欧美一区二区三区喷汁尤物| 国产精品久久久久久亚洲调教| 亚洲最新在线视频| 亚洲国产高潮在线观看| 久久在线免费视频| 在线观看中文字幕不卡| 久久久欧美精品| 久久国产一区二区三区| 国产色视频一区| 欧美一区二区三区日韩| 亚洲一区二区免费在线| 国产精品久久9| 午夜在线精品偷拍| 亚洲综合视频1区| 国产拍揄自揄精品视频麻豆| 性色av一区二区三区| 亚洲一区自拍| 国产日韩在线视频| 久久午夜色播影院免费高清| 久久精品国产999大香线蕉| 国产一区二区久久| 猛干欧美女孩| 欧美激情久久久| 欧美国产亚洲精品久久久8v| 日韩写真视频在线观看| 亚洲老司机av| 国产精品五月天| 久久精品夜色噜噜亚洲aⅴ| 性欧美videos另类喷潮| 国内精品久久国产| 欧美黑人在线播放| 欧美日韩一区综合| 亚欧美中日韩视频| 久久精品国产亚洲a| 91久久综合亚洲鲁鲁五月天| 亚洲欧洲一区二区在线观看| 欧美三级日本三级少妇99| 亚洲欧美日韩综合aⅴ视频| 午夜精品亚洲| 最新高清无码专区| 亚洲午夜激情网页| 雨宫琴音一区二区在线| 91久久久久久久久| 国产日产欧美a一级在线| 美女主播视频一区| 欧美日韩国产一级片| 欧美一区二区三区日韩视频| 久久久欧美一区二区| 一本色道久久综合亚洲精品高清| 亚洲视频专区在线| 在线观看三级视频欧美| 一区二区欧美在线观看| 韩日欧美一区| 99亚洲视频| 在线观看视频欧美| 亚洲免费在线观看| 9国产精品视频| 久久国产精品亚洲77777| 在线亚洲免费视频| 久久久久久网| 欧美一区二区三区在线视频| 久久躁狠狠躁夜夜爽| 亚洲小视频在线| 欧美二区不卡| 另类专区欧美制服同性| 国产精品免费在线| 亚洲精品视频二区| 亚洲精品国精品久久99热| 欧美与黑人午夜性猛交久久久| 一区二区三区不卡视频在线观看 | 尤妮丝一区二区裸体视频| 99精品热视频| 亚洲精品乱码久久久久久按摩观| 午夜伦理片一区| 在线视频欧美日韩精品| 另类天堂视频在线观看| 久久精品国产96久久久香蕉| 欧美日韩在线视频一区二区| 欧美黄色aaaa| 亚洲高清视频一区| 久久三级福利| 亚洲一区二区伦理| 一区二区三区欧美亚洲| 亚洲日韩欧美视频一区| 久久精品免费播放| 久久成人亚洲| 国产精品久久久一区二区| 日韩特黄影片| 一区二区三区久久| 欧美日韩国产免费| 一本色道久久综合亚洲精品婷婷| 亚洲国产精品一区在线观看不卡| 久久9热精品视频| 久久理论片午夜琪琪电影网| 国产欧美日韩视频一区二区| 亚洲在线网站| 久久免费高清视频| 亚洲高清三级视频| 欧美大色视频| 亚洲精品国产拍免费91在线| 99国产一区二区三精品乱码| 欧美激情无毛| 在线亚洲免费| 久久久久国产一区二区三区| 国内精品模特av私拍在线观看| 久久国产精品久久精品国产| 久久艳片www.17c.com| 亚洲电影中文字幕| 欧美久久久久免费| 亚洲伊人一本大道中文字幕| 欧美亚洲视频在线观看| 国内一区二区在线视频观看 | 亚洲第一搞黄网站| 这里只有精品视频| 国产乱人伦精品一区二区| 久久久久9999亚洲精品| 亚洲高清精品中出| 亚洲自拍偷拍一区| 黄色av成人| 欧美日韩精品在线| 欧美在线视频免费播放| 欧美激情视频在线免费观看 欧美视频免费一 | 久久久99精品免费观看不卡| 欧美+亚洲+精品+三区| 亚洲精品一区二区三区樱花| 欧美色区777第一页| 羞羞视频在线观看欧美| 欧美激情第4页| 午夜亚洲影视| 亚洲区欧美区| 国产一区二区高清视频| 欧美日韩国产精品成人| 久久国产精品99久久久久久老狼| 亚洲韩国日本中文字幕| 久久成人精品| 在线视频亚洲一区| 亚洲国产成人精品女人久久久| 国产精品va在线| 久久亚洲精品中文字幕冲田杏梨| 一区二区欧美激情| 欧美电影免费观看| 久久久久久久激情视频| 在线午夜精品| 在线免费精品视频| 国产欧美日韩精品一区| 欧美精品在线观看| 国产色产综合产在线视频| 久久婷婷人人澡人人喊人人爽| 亚洲精品国精品久久99热一| 久久精品一区二区三区不卡| 亚洲一区二区精品在线| 亚洲激情视频网站| 国产精品乱人伦一区二区| 欧美激情国产日韩|