下载软件如何减少文件碎片

happycock 2005-12-24 12:46:40
因为这只是一个文件写入问题,所以我放到这里来了。下面的测试都是在整理碎片之后做的,分区空间还有6G。
我自己写了一个,是4K写一次的,100M文件产生了180多碎片,后来换成4M写一次120多碎片。
考察windows的文件复制操作,不产生碎片。
飞鸽传书60多碎片。
FlashFXP不产生碎片。
预分配磁盘空间我不知道怎么做,看了C的库函数chsize的实现,windows系统上用的是在后面写0的办法,我觉得和直接写结果差不多。
...全文
75 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
happycock 2005-12-24
  • 打赏
  • 举报
回复
我上来就是要报告这个发现的,我使用的是SetFilePointer,反正都一样。
Note that it is not an error to set the file pointer to a position beyond the end of the file.
真不知道windowsAPI的思维怎么是这个样子,不然就是我受老传统的毒害太深了。
正好分也有人给了,有几次最后的答案还是自己找到的,都不知道分给谁。
masterz 2005-12-24
  • 打赏
  • 举报
回复
你创建一个指定大小的文件然后再写进去呢。
CreateFile -> SetFilePointerEx -> SetEndOfFile
happycock 2005-12-24
  • 打赏
  • 举报
回复
实际上,可以先写一个临时文件,然后复制一次,再把临时文件删了。我觉得这是投机取巧,可是还是有软件这么干的,winrar的拖拽操作就是这么做的,于是我就经常看见文件复制进度条。
happycock 2005-12-24
  • 打赏
  • 举报
回复
HOWTO: Overload New to Reduce Memory Fragmentation
查到了这样的……
Atomictry 2005-12-24
  • 打赏
  • 举报
回复
记得MSDN中有一篇文章讲了如何减少碎片. 你在MSDN中搜索"HOWTO:"这个关键字找找看.

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧