我打算做一个类似flashget的东西。这样就表示我如何要把从网络上得到的断断续续的数据写入相应的文件。在这里请教大家有没有什么好方法?我知道使用setvbuf可以增加文件的缓冲。但WriteFile只能写入连续的区间,而不能像WSASend那样,同时提交一个列表。所以,我无计可施,请问大家还有什么好的思想吗?关于文件操作优化的思想谢谢

解决方案 »

  1.   

    仁者见仁的问题
    连接服务器,得到长度
    立即建立一个文件,下载时以map的形式写到文件上
    不过说最皮子容易,实现起来有点难
    上次作了一个没做成
      

  2.   

    先做个虚拟内存,把数据放入,到一定量后再写入文件.
    问题是这样,我们是分段请求的,也就是说
    假设100M文件,分开2个线程。
    前一个线程请求0~50M
    后一个请求50~100M
    (注意这个请求范围就是这样,不要修改这个前提)现在假设缓冲为2M,线程下载速度相等。
    那么第一个线程下载到1M的时候(第二个线程也下载到了1M ),这时就需要写入文件。但是你必须要调用两次WriteFile
    第一次writefile的内容为0~1M
    第二次writefile的内容为50M~51M。似乎还是没有缓解压力。
    能一次提交多个内容到磁盘吗?
    求解