关于文件复制的程序代码
这是一个关于文件复制的例程。希望有人会用,不用摸索。
#包括
#包括
bool force存在;
const bufsize = 409600;//基本单位是400K
//-
void _ _ fastcall t form 1::form create(to object * Sender)
{
edit 1-> Text = extract file path(ParamStr(0));
}
///-
void _ _ fastcall t form 1::button 1 click(to object * Sender)
{
if(open dialog 1-> Execute())
{
an signing fFile = open dialog 1-> FileName;
ansi string tFile = edit 1-> Text+extract filename(fFile);
if (copyfile (ffile,tfile))
{
复制成功...
}
else {
force exist = false;
delete file(tFile);
}
}
}
///-
bool t form 1::copy file(从文件分配,向文件分配)
{
bool result(false);
FILE *FromF,* ToF;
int NumRead,NumWritten
/* BUFSIZ在stdio . h */
char buf[bufsize]中定义;
screen-> Cursor = Cr hourglass;
ToF = fopen(ToFile.c_str()," WB ");
FromF = fopen(from file . c _ str()," Rb ");
try
{
start time = Now();
struct stat stat buf;
/*获取有关文件*/
fstat(fileno(FromF),&statbuf)的信息;
int mod val = stat buf . ST _ size % bufsize;
int MaxVal = statbuf . ST _ size/bufsize;
if(ModVal)maxval++;
progress bar 1-> Max = MaxVal;
float fSize = stat buf . ST _ size;
TVarRec args[2] = {0,fSize };
LBL filesize--> caption = format("文件大小:%。*n字节”,args,1);
LBL start time--> Caption = " start time:"+format datetime(" hh:nn:ss ",start time);
ForceExist = false;
ProgressBar1->Position = 0;
do
{
if (ProgressBar1->PositionPosition + 1);
}
else if (ModVal) {//当剩余的数据不足400K时,需作特殊处理...
char *Smallbuf;
Smallbuf = (char *)SysGetMem(ModVal);
NumRead = fread(Smallbuf, ModVal, 1, FromF); // read the data
NumWritten = fwrite(Smallbuf, ModVal, 1, ToF); // Write the data
fSize += ModVal;
SysFreeMem(Smallbuf);
NumRead = 0;
}
ProgressBar1->Position++;
TVarRec args[2] = {0,fSize};
lblFileTrans->Caption = Format("已经复制: %.*n字节", args, 1);
lblElapseTime->Caption = "已用时间: "+FormatDateTime("hh:nn:ss",Now()-StartTime);
Application->ProcessMessages();
}
while (!ForceExist && (NumRead!=0 || NumRead==NumWritten));
ProgressBar1->Position++;
fclose(ToF);
fclose(FromF);
result = !ForceExist;
}
catch(...)
{
fclose(ToF);
fclose(FromF);
MessageDlg("在复制文件时出现错误,未能完成操作。", mtWarning, TMsgDlgButtons() Cursor = crDefault;
return result;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BtnStopClick(TObject *Sender)
{
if (MessageDlg("正在复制文件,是否要取消操作?", mtWarning, TMsgDlgButtons()
0条评论