实现高速文件拷贝
点击次数:47 次 发布日期:2008-11-09 08:37:47 作者:源代码网
|
源代码网推荐 {$A ,B-,D-,E ,F ,G ,I-,L-,N ,P-,Q-,R-,S-,T-,V-,X-,Y-} 源代码网推荐 {$M 16384,$10000} 源代码网推荐 源代码网推荐 const 源代码网推荐 MaxBufCnt = 1000; 源代码网推荐 type 源代码网推荐 BufPtr = ^BufRec; 源代码网推荐 BufRec = array[0..8190] of byte; 源代码网推荐 源代码网推荐 源代码网推荐 var 源代码网推荐 InFile, OutFile : file; {IF is In File, OF is OutFile} 源代码网推荐 Buffer : array[1..MaxBufCnt] of BufPtr; 源代码网推荐 BufLen : array[1..MaxBufCnt] of word; 源代码网推荐 BufSiz : array[1..MaxBufCnt] of word; 源代码网推荐 BufCnt : byte; 源代码网推荐 Total : longint; 源代码网推荐 SizeofFile : longint; 源代码网推荐 IndexR,IndexW : byte; 源代码网推荐 BytesWritten : word; 源代码网推荐 BR, BW : longint; 源代码网推荐 Timer1,Timer2 : longint; 源代码网推荐 Ticks : ^Longint; 源代码网推荐 源代码网推荐 begin 源代码网推荐 Ticks := Ptr(Seg0040, $006c); 源代码网推荐 if paramcount < 2 then begin 源代码网推荐 writeln("Usage:", paramstr(0), " 源代码网推荐 源代码网推荐 "); 源代码网推荐 halt; 源代码网推荐 end; 源代码网推荐 assign(InFile, paramstr(1)); 源代码网推荐 assign(OutFile, paramstr(2)); 源代码网推荐 writeln; 源代码网推荐 writeln("Copying ", paramstr(1), " to ", paramstr(2)); 源代码网推荐 reset(InFile, 1); 源代码网推荐 rewrite(OutFile, 1); 源代码网推荐 BufCnt := 0; 源代码网推荐 SizeOfFile := filesize(InFile); 源代码网推荐 Total := 0; 源代码网推荐 while (MaxAvail>8192) and (BufCnt 源代码网推荐 BufLen[IndexW] then begin 源代码网推荐 writeln; 源代码网推荐 writeln("Error writing to file... Disk might be full"); 源代码网推荐 Halt; 源代码网推荐 end; 源代码网推荐 end; 源代码网推荐 end; 源代码网推荐 Close(InFile); 源代码网推荐 Close(OutFile); 源代码网推荐 Timer2 := ticks^; 源代码网推荐 writeln; 源代码网推荐 writeln("Copy took ", Timer2-Timer1, " timer ticks to complete"); 源代码网推荐 writeln("Throughput is ", SizeOfFile div (Timer2-Timer1), " bytes/tick"); 源代码网推荐 writeln("or if you prefer ", (SizeOfFile div (Timer2-Timer1)) * 18.2:8:0, " 源代码网推荐 bytes/second"); for IndexR := 1 to BufCnt do 源代码网推荐 freemem(Buffer[IndexR], BufSiz[IndexR]); 源代码网推荐 writeln; 源代码网推荐 writeln("Copy complete"); 源代码网推荐 end. 源代码网推荐 源代码网供稿. |
