对于大文件的文件内定位

来源:互联网 发布:矩阵的卷积运算 编辑:程序博客网 时间:2024/05/01 11:05

由于通常的文件位移是用32位有符号整数表示,所以限制了文件位移的最大限度是2G,对于大文件来说,这种限制是必须去掉的。

    可行的办法:
  • 蚂蚁搬家,把大位移变成连续的小位移。这种方法可以最大程度的保持兼容。

    缺点:仍然要看seek库函数的具体实现,比如在windows下面,seek的实现要把相对位移(SEEK_CUR)转化成绝对位移(SEEK_SET),这样,这种方法就失效了。

  • 使用64位的位移。这种方法无法保持兼容。

    缺点:不是每个seek的实现都提供了这种扩展的。

    建议的办法:
  • windows下:使用win32 api中的CreateFile/SetFilePointer这套函数来进行操作,避免使用open/seek这些,这样虽然不能兼容,但是可以很好的解决大文件问题。

  • linux下:建议使用下面的代码:
        #ifndef __USE_LARGEFILE64     #define __USE_LARGEFILE64    #endif #include 

    这样可以使用64位的文件操作api,但仍然建议蚂蚁搬家,把大位移拆成2G的小位移来做,这样可以比较好的保持兼容。

最后一个需要说明的地方,由于+0x80000000 == -0x80000000,所以可以进行的小位移的最大值是0x7FFFFFFF,实际上考虑到对齐,使用0x7FFFFFF0比较合适。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 开淘宝店客服怎么办 买到翻新机器怎么办 捡的貔貅需要怎么办 阿里巴巴店铺宝贝侵权怎么办 被告ktv歌曲侵权怎么办 淘宝盗买家图怎么办 淘宝身份复核不过怎么办 商家不退押金怎么办 保证金单子丢了怎么办 商场不退押金怎么办 淘宝直播前期没人怎么办 孕产妇保健手册怎么办 淘宝新店橱窗少怎么办 客服被客户骂怎么办 跟客户说错话怎么办 如果店家拒绝退款怎么办 淘宝发错地址怎么办 店家没发货退款怎么办 淘宝被拒绝退款怎么办 蛲虫药膏买不到怎么办 买家号违规了怎么办 淘宝违规扣分了怎么办 快递包裹出现异常怎么办 农行卡状态异常怎么办 农行卡无法使用怎么办 牙根下面有囊肿怎么办 qq登录异常是怎么办 马云创业失败怎么办 身上还有20块钱怎么办 如果一分钱都没想创业怎么办 投资云联惠的钱怎么办 钱宝网投资的钱怎么办 投资钱要不回来怎么办 面对选择总纠结怎么办 如果客户说没钱怎么办 淘宝客订单失效怎么办 喜宝米粉不含铁怎么办 淘宝直播一直卡怎么办 淘宝直播很卡怎么办 贷款没办法还怎么办 淘宝直播间被主播禁言了怎么办?