Chinaunix首页 | 论坛 | 博客
  • 博客访问: 230380
  • 博文数量: 73
  • 博客积分: 3005
  • 博客等级: 中校
  • 技术积分: 857
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-24 10:11
文章分类

全部博文(73)

文章存档

2014年(2)

2011年(5)

2010年(29)

2009年(32)

2008年(5)

我的朋友

分类:

2009-12-11 16:58:52

  unit   FileRead;  
  interface  
  uses  
      Classes,   SysUtils;  
  type  
      TFileReadThread   =   class(TThread)  
      private  
          {   Private   declarations   }
          FFileName:String;  
          FOutFile:String;  
          FStart:Integer;  
          FLen:Integer;  
      protected  
          procedure   Execute;   override;  
      public  
          constructor   Create   (FileName,OutFile:String;Start,Len:Integer);  
      end;  
   
  implementation  
   
  {   TFileReadThread   }  
  constructor   TFileReadThread.Create(FileName,OutFile:   String;   Start,   Len:   Integer);  
  begin  
    FFileName   :=   FileName;  
    FOutFile   :=OutFile;  
    FStart   :=   Start;  
    FLen   :=   Len;  
    FreeOnTerminate   :=   True;  
    Inherited   Create(false);  
  end;  
   
  procedure   TFileReadThread.Execute;  
  var  
      InStream,OutStream:TStream;
      buf:Array   of   Byte;  
  begin  
      {   Place   thread   code   here   }
      InStream   :=   TFileStream.Create(FFileName,fmOpenRead   or   fmShareDenyWrite);  
      OutStream  :=   TFileStream.Create(FOutFile,fmCreate);  
      SetLength(Buf,FLen);  
      InStream.Seek(FStart,soFromBeginning);  
      FLen   :=   InStream.Read(Buf[0],FLen);
      OutStream.Write(Buf[0],FLen);  
      OutStream.Free;  
      InStream.Free;  
  end;  
   
  end.  
   
  //调用:const  
      LINELEN   =   1;  
  var  
      i:Integer;  
      Len:Integer;  
      fstr:TStream;  
  begin  
      fStr   :=   TFileStream.Create('E:\OldTree\a\a.txt',fmOpenRead   or   fmShareDenyWrite);  
      Len   :=   (Trunc(((fStr.Size   /   10)   /   (LINELEN   +2)))   +1)   *   (LINELEN   +   2);  
      //设置Len为一行的整数倍,注意CR/LF为两个字符.  
      for   i:=0   to   9   do  
          TFileReadThread.Create('E:\OldTree\a\a.txt','E:\OldTree\a\a'   +   IntToStr(i)   +   '.txt',i*Len,Len);  
      fstr.Free;  
  end;  
   
阅读(969) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~