~~~急~~~~关于文件分割(200分)

  • 主题发起人 主题发起人 mojialin100
  • 开始时间 开始时间
M

mojialin100

Unregistered / Unconfirmed
GUEST, unregistred user!
我在做一个文件共享的系统,涉及文件分割的问题!
可以提供一个例子吗??高分相赠!~~~~~~~
 
Unit SplitFl;

interface

procedure SplitFile(const pFileName :AnsiString; const pSplitSize :LongInt);

implementation

uses
Classes, SysUtils, Dialogs, Windows;

function Smaller(const a,b:LongInt) :LongInt;
begin
if(a < b)then
begin
Result := a;
end else
if(b > 0)then
begin
Result := b
end else Result := 0;
end;

procedure SplitFile(const pFileName :AnsiString; const pSplitSize :LongInt);
var
vInpFlHandle :Integer;
vOutFlHandle :Integer;
vInpBytesLft :Integer;
vOutBytesLft :Integer;
vBufferSize :Integer;
vBytesDone :Integer;
vBuffer :Pointer;
vCtr :Integer;
begin

//Use one of the following options to open the file.
//vInpFlHandle := Integer(CreateFile(PChar(pFileName),GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,
FILE_FLAG_SEQUENTIAL_SCAN));
vInpFlHandle := FileOpen(pFileName,0);

vInpBytesLft := FileSeek(vInpFlHandle,0,2);

if(vInpBytesLft > pSplitSize)then
begin
vBufferSize := Smaller(GetHeapStatus.TotalUncommitted,pSplitSize);
GetMem(vBuffer,vBufferSize);

FileSeek(vInpFlHandle,0,0);
vCtr := 0;

while(vInpBytesLft > 0)do
begin
Inc(vCtr);

//Use one of the following options to open the file.
//vOutFlHandle := Integer(CreateFile(PChar(pFileName + '.' + FormatFloat('000', vCtr)),GENERIC_READ or GENERIC_WRITE,0,nil,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,FILE_FLAG_SEQUENTIAL_SCAN));
vOutFlHandle := FileCreate(pFileName + '.' + FormatFloat('000', vCtr));

vOutBytesLft := Smaller(vInpBytesLft,pSplitSize);

while(vOutBytesLft > 0)do
begin
vBytesDone := FileRead(vInpFlHandle,vBuffer^,Smaller(vOutBytesLft,vBufferSize));
FileWrite(vOutFlHandle,vBuffer^,vBytesDone);
Dec(vInpBytesLft,vBytesDone);
Dec(vOutBytesLft,vBytesDone);
end;

FileClose(vOutFlHandle);
end;

FreeMem(vBuffer);
end else MessageDlg('File too small to split!',mtInformation,[mbOk],0);

FileClose(vInpFlHandle);
end;

end.
 
谢谢,那文件合并有例子吗
 
在msdos下
copy A1+A2+A3 合并文件
A1,A2,A3為你分割開的文件﹗
 
数据流读写而已,http://ailine_xinghe.home.chinaren.com
 
谢谢各位,但是我的这个合并是要求的,文件在网络数据流的方式传输到本地,就根据数据流进行合并
比如:host1上有file1.txt
host2上有file2.txt
在host3要在host1,host2上下载这个文件,那么要file1.txt,file2.txt通过数据流传送过来!在合并,哪个
大虾有没有好的方法,或是好的例子!
高分就送
 
你的邮箱?
我给你一个文件分割控件吧。
 
http://ailine_xinghe.home.chinaren.com/mypro/bind.zip
你看看这段代码,就明白了,不过是利用文件流把程序a 分割成b,c,d.....等等,然后在次
copy后就是一个完整的程序了,你是不是想做一个多现成下载的东西呀,呵呵!
 
多线程WINSOCK传送文件我有程序的
 
libeixian@163.net
谢谢大家了!
 
后退
顶部