我用CopyFile这个函数怎么不行?
代码如下,我是想在要保存的地方复制一个Result.mdb这个文件,改个名。
可是执行结果是,出现一个给定名字的的文件,但只有0字节。而且单步执行时发现,a为0,表示CopyFile失败,怎么回事呢?Result.mdb文件的路径没错
CFile file;
CString m_FileName;
CFileDialog m_FileOpen(FALSE,".mdb",NULL,OFN_OVERWRITEPROMPT,"Result Files(*.mdb)|*.mdb|所有文件(*.*)|*.*||");
if(m_FileOpen.DoModal()==IDOK){
m_FileName=m_FileOpen.GetPathName();
}
CString m_Path=m_FileName.Left(m_FileName.ReverseFind('\\'));
CString strFileName="C:\\project\\Files\\Result.mdb";
LPCTSTR lpNewFileName = (LPCTSTR)(m_FileName);
int a=CopyFile(
(LPCTSTR)strFileName, // pointer to name of an existing file
lpNewFileName, // pointer to filename to copy to
FALSE // flag for operation if file exists
);
问题点数:50、回复次数:8Top
1 楼sgnaw(李逍遥)回复于 2004-05-04 10:51:59 得分 0
CopyFile 路径的参数有误,即 strFileName 不对,你可以使用绝对路径,即:
CString m_Path = m_FileOpen.GetFileName();Top
2 楼xhmhit(祁儿)回复于 2004-05-04 10:58:35 得分 0
strFileName所在的路径是固定的,而且与FileOpen是无关的呀Top
3 楼sgnaw(李逍遥)回复于 2004-05-04 11:00:43 得分 0
哦,是的,应该是 m_Path ,即:
m_Path = m_FileOpen.GetFileName();Top
4 楼xhmhit(祁儿)回复于 2004-05-04 11:03:56 得分 0
m_Path与拷贝文件是无关的:(
没用到过Top
5 楼sgnaw(李逍遥)回复于 2004-05-04 11:09:43 得分 50
反正就是第二个参数有问题,就下面这样就 OK 了:
void CDialog2::OnMyCopyFile()
{
CFile file;
CString m_FileName;
CFileDialog m_FileOpen(FALSE,".mdb",NULL,OFN_OVERWRITEPROMPT,"Result Files(*.mdb)|*.mdb|所有文件(*.*)|*.*||");
if(m_FileOpen.DoModal()==IDOK){
m_FileName=m_FileOpen.GetPathName();
}
CString m_Path=m_FileName.Left(m_FileName.ReverseFind('\\'));
CString strFileName="C:\\project\\Files\\Result.mdb";
LPCTSTR lpNewFileName = (LPCTSTR)(m_FileName);
int a=CopyFile(
(LPCTSTR)strFileName, // pointer to name of an existing file
m_FileName, // pointer to filename to copy to
FALSE // flag for operation if file exists
);
}Top
6 楼sgnaw(李逍遥)回复于 2004-05-04 11:13:08 得分 0
你的 Result.mdb 文件是不是不在 C:\project\Files 目录下啊?Top
7 楼xhmhit(祁儿)回复于 2004-05-04 11:19:27 得分 0
在呀
你写的那一段跟我那个是不是就把lpNewFileName 改成m_FileName了吗?Top
8 楼xhmhit(祁儿)回复于 2004-05-04 11:20:33 得分 0
执行完了会出现一个.mdb的文件,但是只有0字节,其中没有内容,也不能用access打开Top




