delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
文件操作问题,如何在文件尾部追新的文件片? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061127111443244.html
我用indy分片断点传文件,客户端每次发送32K,但是在服务器端接收之后,每次写入都将原来的覆盖了,如何解决?望高手不吝赐教!  
   
  服务器端处理源码:  
      If   sCommand='StreamContent'   Then  
      Begin  
          //接收文件大小  
          sCommand:=AThread.Connection.ReadLn();  
          TotalSize:=StrToInt(sCommand);  
   
          //当前大小  
          fs:=TFileStream.Create('TestReceive.exe',fmOpenRead);  
          NowSize:=fs.Size;  
          fs.Free;  
          lbRecord.Items.Add(IntToStr(NowSize)   +   '/'   +   sCommand);  
   
          //接收流  
          fs:=TFileStream.Create('TestReceive.exe',fmOpenReadWrite);  
          AThread.Connection.ReadStream(fs,Min(TotalSize-NowSize,AThread.Connection.RecvBufferSize),False);  
  //*******问题就出在上面这行,我换过打开方式为fmCreate,也不行******  
          fs.Free;  
   
          //发送当前字节大小,如果已经完成,则发送FILEEND  
          fs:=TFileStream.Create('TestReceive.exe',fmOpenRead);  
          NowSize:=fs.Size;  
          If   NowSize>=TotalSize   Then   AThread.Connection.WriteLn('FILEEND')   Else  
          Begin  
              AThread.Connection.WriteLn(IntToStr(NowSize));  
          end;  
          fs.Free;  
   
          //发送提示继续  
          AThread.Connection.WriteLn('GOON');  
      end;  
   
   
  同问题发送在DELPHI的VCL版,up者1分,解决者最少50分。  
 

//解决者最少50分。  
  哇,利益驱动老冯,给你一段代码。

冯老前辈,我在等你的代码哦。如果你一下子就解决,就是100分哦,再在另一个帖子回复一下,就是200分哦。

靠   快无语了   抢分达人啊   老冯~~

不抢了。

没有人来,我就来。哼哼哈哈。  
   
  var  
      CurrentFile:   TFileStream   ;  
      NextFile:   TFileStream;  
      UpdateFile:   File;  
  begin  
      //建立一个临时文件  
      if   FileExists('NextTestReceive.exe')   then  
      begin  
          AssignFile(UpdateFile,'NextTestReceive.exe');  
          Rewrite(UpdateFile,1);  
          CloseFile(UpdateFile);  
      end;  
   
      CurrentFile   :=   TFileStream.Create('TestReceive.exe',fmOpenwrite);  
      CurrentFile.Seek(0,soFromEnd);  
   
      NextFile   :=   TFileStream.Create('NextTestReceive.exe',fmOpenRead);  
      AThread.Connection.ReadStream(NextFile,   -1,   True);//读  
      NextFile.Seek(0,   soFromBeginning);  
   
      CurrentFile.CopyFrom(NextFile,   NextFile.Size);   //追尾  
   
      CurrentFile.Free;  
      NextFile.Free;  
  end;

最好再加一句,删除临时文件

posted on 2009-03-02 11:32 delphi2007 阅读(124) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。