请教各位大虾,如何用DELPHI生成一个指定大小的文件,然后用多线程的方式写文件,就象网际快车一样?在线等待!

解决方案 »

  1.   

    1 比如一个文件名称叫:c:\test.rar  大小14.8M
      2 假如开了4个线程,将c:\test.rar 移动到d:\test.rar
      3 将c:\test.rar读入并分成4块内存,4快的大小的和等于c:\test.rar大小
      4 将分割好的4块经过4个线程转到d:\temp文件夹内
      5 线程完成文件转移后,将4块文件在整合到一起。
    --------------个人看法
      

  2.   

    只要保证写的内容不会超过文件大小,并且各个线程写的内容不会重叠(不过即使重叠也不会出错的),那么多线程同时写没有问题。
    分配一个指定大小的文件可以用下面代码实现:
    var
      fid: Integer;
    begin
      fid := filecreate('test.tmp');
      fileseek(fid, 1048576, 0);  // 1M大小
      setendoffile(fid);
      fileclose(fid);
    end;
      

  3.   

    多之前做过FTP多线程下载..下直在处理这个问题.
    下载的大小不容易控制.文件的大小可以直接TStream.Size:= 
    HTTP的可以设置下载起点和终点.但FTP不行.
    文件的操作.建议最好在主线程中处理.不要在几个线程同时写文件.
    很容易出错.不是文件不对就是文件变大了.
    下载的线程只做把该段数据下载下来.主线程负责合并.而且这样可以把多下载的部分截掉.