var
FStrm1,FStrm2:TFileStream;
begin
FStrm1:=TFileStream.Create('c:\123.dat',fmOpenread);
FStrm2:=TFileStream.Create('\\cc1\f\1.txt',fmCreate);
FStrm2.CopyFrom(FStrm1,FStrm1.Size);
FStrm1.Free;
FStrm2.Free;
end;
我用这个方式拷贝文件,我本来想用copyfile的,但是copyfile好像不支持局域网拷贝。所以我用流,文件123.dat是一个30兆以上的文件,但是每次拷贝到27.X兆的时候,就弹出一个错误,好像是缓冲区溢出的意思,怎么办啊,是不是要定义一个缓冲变量什么的,教教我,给我一个具体的例子吧,
FStrm1,FStrm2:TFileStream;
begin
FStrm1:=TFileStream.Create('c:\123.dat',fmOpenread);
FStrm2:=TFileStream.Create('\\cc1\f\1.txt',fmCreate);
FStrm2.CopyFrom(FStrm1,FStrm1.Size);
FStrm1.Free;
FStrm2.Free;
end;
我用这个方式拷贝文件,我本来想用copyfile的,但是copyfile好像不支持局域网拷贝。所以我用流,文件123.dat是一个30兆以上的文件,但是每次拷贝到27.X兆的时候,就弹出一个错误,好像是缓冲区溢出的意思,怎么办啊,是不是要定义一个缓冲变量什么的,教教我,给我一个具体的例子吧,
procedure TForm1.Button1Click(Sender: TObject);
begin
if CopyFile('C:\A.dll',Pchar('\\192.168.1.82\sss\Y004_A.dll'), false) then
ShowMessage('OK');
end;
unit S6_1_u;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, XPMan, Gauges;type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Label4: TLabel;
Timer1: TTimer;
ProgressBar1: TProgressBar;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button3Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.Title:='源文件';
if OpenDialog1.Execute then
Edit1.Text:=OpenDialog1.FileName;
end;procedure TForm1.Button2Click(Sender: TObject);
var
ExtName:String;
begin
SaveDialog1.Title:='另存为';
SaveDialog1.FileName:=ExtractFileName(Edit1.Text);
SaveDialog1.Filter:=ExtractFileExt(Edit1.Text);
ExtName:=ExtractFileExt(Edit1.Text);
Delete(ExtName,1,1);
SaveDialog1.DefaultExt:=ExtName;
if SaveDialog1.Execute then
begin
if FileExists(SaveDialog1.FileName) then
begin
if messagedlg('文件名相同,是否复盖?',mtinformation,[mbYes,mbNo],0)=mrYes then
begin
Edit2.Text:=SaveDialog1.FileName;
end
end
else
Edit2.Text:=SaveDialog1.FileName;
end;
end;procedure TForm1.Button4Click(Sender: TObject);
begin
Close;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;procedure TForm1.Button3Click(Sender: TObject);
var
FromF,ToF:file;
NumRead,NumWriten:Integer;
Buf: array[1..2048] of Char;
begin
ProgressBar1.Visible:=True;
Button4.Enabled:=False;
Button3.Width:=150;
Button3.Caption:=' 正在拷贝...';
AssignFile(FromF,Edit1.Text);
Reset(FromF,1);
AssignFile(ToF,Edit2.Text);
Rewrite(ToF,1);
Edit3.Text:=IntToStr(FileSize(FromF))+'字节';
ProgressBar1.Max:=FileSize(FromF);
ProgressBar1.Min:=0;
ProgressBar1.Step:=SizeOf(Buf);
repeat
BlockRead(FromF,Buf,SizeOf(Buf),NumRead);
BlockWrite(ToF,Buf,NumRead,NumWriten);
ProgressBar1.StepIt;
until (NumRead=0) or (NumWriten<>NumRead);
messagedlg('拷贝完成!',mtinformation,[mbOK],0);
CloseFile(FromF);
CloseFile(ToF);
Button4.Enabled:=True;
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Edit1.Text<>'' then
begin
Edit2.Enabled:=True;
Edit3.Enabled:=True;
Button2.Enabled:=True;
end;
if (Edit1.Text<>'')and(Edit2.Text<>'')then
Button3.Enabled:=True;
end;end.