sharkmouse
禁止发言
禁止发言
  • 注册日期2003-05-05
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1355分
  • 威望7163点
  • 贡献值1点
  • 好评度24点
  • 原创分0分
  • 专家分0分
阅读:1589回复:11

怎样快速的读写磁盘?

楼主#
更多 发布于:2005-08-03 22:00
用户被禁言,该主题自动屏蔽!
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-08-04 09:20
下面是引用sharkmouse于2005-08-03 22:00发表的怎样快速的读写磁盘?:
    我想把一个磁盘里的文件全部拷贝出来保存到一个文件里,目前的实现方法是:
      先用CreateFile打开磁盘,然后读写一块数据再写到一个新建的文件里,直到结束或达到一定大小的结束条件。
  但是测试后发现效率很低,无法适应大容量磁盘,不知该怎么办?
  哪位可以提供高效的解决办法?

顺序读写 每次64K 是最快的。
---内核开发合作或提供基础技术服务QQ:22863668 ---
sharkmouse
禁止发言
禁止发言
  • 注册日期2003-05-05
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1355分
  • 威望7163点
  • 贡献值1点
  • 好评度24点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-08-04 12:17
用户被禁言,该主题自动屏蔽!
yuanyuan
驱动大牛
驱动大牛
  • 注册日期2003-01-15
  • 最后登录2010-08-04
  • 粉丝0
  • 关注0
  • 积分1025分
  • 威望300点
  • 贡献值0点
  • 好评度232点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-08-04 12:42
一个建议:用内存映射文件的方式打开和读取
sharkmouse
禁止发言
禁止发言
  • 注册日期2003-05-05
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1355分
  • 威望7163点
  • 贡献值1点
  • 好评度24点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-08-04 13:03
用户被禁言,该主题自动屏蔽!
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2005-08-04 13:29
下面是引用yuanyuan于2005-08-04 12:42发表的:
一个建议:用内存映射文件的方式打开和读取

不可能的。
硬盘不支持。
---内核开发合作或提供基础技术服务QQ:22863668 ---
RED_spring
驱动中牛
驱动中牛
  • 注册日期2002-07-28
  • 最后登录2016-11-06
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望19点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2005-08-04 17:28
参照GHOST的方法。 先分析一遍文件系统,然后。。。具体的细节就看你的创造性了:) 尽量连续读写。 如果磁盘上小(和碎)文件多的话,连续读写还是很快的。(与直接访问文件相比)
sharkmouse
禁止发言
禁止发言
  • 注册日期2003-05-05
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1355分
  • 威望7163点
  • 贡献值1点
  • 好评度24点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-08-05 07:24
用户被禁言,该主题自动屏蔽!
Astronomy
驱动小牛
驱动小牛
  • 注册日期2005-04-11
  • 最后登录2011-12-20
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望31点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-08-05 09:25
下面是引用sharkmouse于2005-08-03 22:00发表的怎样快速的读写磁盘?:
    我想把一个磁盘里的文件全部拷贝出来保存到一个文件里,目前的实现方法是:
      先用CreateFile打开磁盘,然后读写一块数据再写到一个新建的文件里,直到结束或达到一定大小的结束条件。
  但是测试后发现效率很低,无法适应大容量磁盘,不知该怎么办?
  哪位可以提供高效的解决办法?


搂主在开发文件保护之类的软件巴......
菜鸟也写Windows
yuanyuan
驱动大牛
驱动大牛
  • 注册日期2003-01-15
  • 最后登录2010-08-04
  • 粉丝0
  • 关注0
  • 积分1025分
  • 威望300点
  • 贡献值0点
  • 好评度232点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-08-05 10:39
想做成ghost的办法也不难,无非就是分析fat表和mft表,然后按照扇区排序,这样可以减少磁头来回的寻道时间,我做过这种的。

此外也可以考虑用微软提供的卷快照技术
sharkmouse
禁止发言
禁止发言
  • 注册日期2003-05-05
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1355分
  • 威望7163点
  • 贡献值1点
  • 好评度24点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-08-05 12:59
用户被禁言,该主题自动屏蔽!
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-08-06 10:48
下面是引用yuanyuan于2005-08-05 10:39发表的:
然后按照扇区排序,这样可以减少磁头来回的寻道时间,我做过这种的。

呵呵类似电梯
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
游客

返回顶部