社区
进程/线程/DLL
帖子详情
在线求救,关于文件复制方面的问题
gwenxia
2003-12-05 12:29:47
我要做一个文件复制的程序(功能和windows的复制一样),请问各位高手我如何才能获得当前复制的进度(即完成了百分之多少,还有文件复制的速度是怎么获得的)?
...全文
114
17
打赏
收藏
在线求救,关于文件复制方面的问题
我要做一个文件复制的程序(功能和windows的复制一样),请问各位高手我如何才能获得当前复制的进度(即完成了百分之多少,还有文件复制的速度是怎么获得的)?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
EricTangHL
2003-12-19
打赏
举报
回复
mark
gwenxia
2003-12-17
打赏
举报
回复
好的,我的EMail是xiayingwen@hunau.net,谢了!
显刚
2003-12-15
打赏
举报
回复
我认为要精确显示进度必须遍历两遍源路径的内容
第一遍得到整个目录的大小
第二遍是将文件读取并在新目录下生成副本
应该有3个函数
GetFolderCount(const char* SourcePath)
CopyFile(const char* Source,const char* Dest)
CopyDir(const char* Source,const char* Dest)
可能还会有
CreateDir(const char* Path);
这些函数我都实现了效率比Windows的慢30%
你有兴趣,可以留个Mail探讨一下
gwenxia
2003-12-12
打赏
举报
回复
问题2
void CCopyingDlg::CopyingOperate(CString m_strSourFile,CString m_strDestFile)
{
char letter[2];
CFile SourceFile(m_strSourFile,CFile::modeReadWrite);
CFile DestFile(m_strDestFile,CFile::modeCreate|CFile::modeReadWrite);
CurrentLength=0;
TotalLength=SourceFile.GetLength();
/*m_ctrlAnimate.Open(strAnimateFile);
m_ctrlProgress.SetRange(CurrentLength,TotalLength);
m_ctrlProgress.SetStep(1);*/
while(CurrentLength<TotalLength)
{
SourceFile.Read(letter,1);
letter[1]='\0';
DestFile.Write(letter,1);
SourceFile.Seek(0,CFile::current);
DestFile.Seek(0,CFile::current);
CurrentLength++;
//m_ctrlProgress.StepIt();
//m_ctrlAnimate.Play(0,0xFFFF,1);
// m_iFinishPercent=CurrentLength*100/TotalLength;
// m_strFinishPercent.Format("%d%%",m_iFinishPercent);
// UpdateData(false);
}
AfxMessageBox("文件复制成功!");
m_ctrlAnimate.Stop();
SourceFile.Close();
DestFile.Close();
//CDialog::OnCancel();
}
调用语句为: DLG.DoModal(); //(选择好源文件和目标文件后就会出现另一个界面,动画和复制进度)
DLG.CopyingOperate(m_strSourFile,m_strDestFile);
为什么我无去掉注释语句,编译时照样没有出错,运行不但不会出现动画和文件复制的进度而且时还会出现(我是在另一个类时里面调用这个函数的)一大批的调试错误,程序被终止,请问高手们应该如何解决这个问题?若分数不够的话,我还可以加的!
gwenxia
2003-12-11
打赏
举报
回复
不能利用函数实现,必须是自己用程序实现,即利用文件的读写功能!
gwenxia
2003-12-11
打赏
举报
回复
难道就用fgetc()和fputc()吗
checkyvc6
2003-12-10
打赏
举报
回复
下面的想法很好啊,学习.....
CopyFileEx 的第三个参数:LPPROGRESS_ROUTINE 是个回调函数,其声明如下:
DWORD CALLBACK CopyProgressRoutine(
LARGE_INTEGER TotalFileSize, // file size
LARGE_INTEGER TotalBytesTransferred, // bytes transferred
LARGE_INTEGER StreamSize, // bytes in stream
LARGE_INTEGER StreamBytesTransferred, // bytes transferred for stream
DWORD dwStreamNumber, // current stream
DWORD dwCallbackReason, // callback reason
HANDLE hSourceFile, // handle to source file
HANDLE hDestinationFile, // handle to destination file
LPVOID lpData // from CopyFileEx
);
TotalFileSize和TotalBytesTransferred一比较,进度不出来了?
一条晚起的虫
2003-12-10
打赏
举报
回复
API 函数,不用包含头文件,库文件是kernel32.lib
gwenxia
2003-12-09
打赏
举报
回复
这个函数的头文件是什么?
gwenxia
2003-12-09
打赏
举报
回复
我用这个函数时,怎么会出现这个函数没有定义,E:\114\xyw\VC\copy\CopyDlg.cpp(222) : error C2065: 'CopyFileEx' : undeclared identifier
maoxianwang
2003-12-08
打赏
举报
回复
嗯,用它采样就成~
gwenxia
2003-12-08
打赏
举报
回复
兄弟,可以举一个具体点的例子吗?
matiao
2003-12-07
打赏
举报
回复
CopyFileEx 的第三个参数:LPPROGRESS_ROUTINE 是个回调函数,其声明如下:
DWORD CALLBACK CopyProgressRoutine(
LARGE_INTEGER TotalFileSize, // file size
LARGE_INTEGER TotalBytesTransferred, // bytes transferred
LARGE_INTEGER StreamSize, // bytes in stream
LARGE_INTEGER StreamBytesTransferred, // bytes transferred for stream
DWORD dwStreamNumber, // current stream
DWORD dwCallbackReason, // callback reason
HANDLE hSourceFile, // handle to source file
HANDLE hDestinationFile, // handle to destination file
LPVOID lpData // from CopyFileEx
);
TotalFileSize和TotalBytesTransferred一比较,进度不出来了?
gwenxia
2003-12-06
打赏
举报
回复
但是我要把复制的进度显示出来的,应该怎样才能取出这些数据?
jerryok638
2003-12-06
打赏
举报
回复
你可以打开一个文件,做一个读和写的循环。。
在这个循环中,你可以将文件依次地读到一个缓冲区中,再依次地写到目标文件中。
你在循环中对读的次数计数,这个次数乘上缓冲区的长度再除以文件的总长度就得到了当前进度。
输入文件的长度可以调用API函数得到。
oknight
2003-12-05
打赏
举报
回复
直接用文件的读写功能,自己当然知道读了多少,写了多少了
matiao
2003-12-05
打赏
举报
回复
用CopyFileEx 试一下。
linux
文件
恢复 软件,用于Linux数据恢复的前5大软件
数据恢复是为了确保硬盘驱动器的内容在计算机内置功能的帮助下或安装任何第三方软件程序时都没有任何
问题
和
问题
。完全避免危机的最佳方法是确保在这
方面
做了足够的准备工作,以便启动灾难恢复或灾难恢复计划。编写本...
mfs 分布式
文件
系统
mfs权威指南(moosefs)分布式
文件
系统一站式解决方案(部署,性能测试)不断更新 http://bbs.chinaunix.net/thread-1644309-1-1.html 1. 我在性能测试中间遇到些
问题
,因为我时间有限...
教你如何编写病毒
当
文件
被
复制
或从一个用户传送到另一个用户时,它们就随 同
文件
一起蔓延开来。 除
复制
能力外,某些计算机病毒还有其它一些共同特性:一个被污染的程序能够传送病毒载体。当你看到病毒载体似乎 仅仅表现在文字和图象...
EFS加密和解密
EFS是一种系统自带的
文件
加密技术,下面就讲如何进行EFS加密以及如何解密的相关知识…… 大家对Windows2000/XP/2003系统提供的EFS(加密
文件
系统)功能一定不陌生吧!它应用在NTFS
文件
系统中,能有效保护机器中的重要...
flash常见
问题
集锦,很适合新手哦
如何加载一个SWF
文件
并控制其位置等相应属性……新建一个空地MC,将它放在主场景中,实体名改为OK,写AS: loadMovie("test.swf", "_root.ok"); 控制这个MC的位置,大小等相对属性(Property)就会影响调入SWF的位置...
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章