关于文件的问题,很离奇!!

duxudai 2011-11-15 11:56:29
我在程序中创建了一个临时的文件,在整个软件在退出的时候删除这个临时文件。现在的情况是:我通过编译器打开软件,进行操作然后推出软件我看到在workspace的临时文件消失了;而我直接在workspace打开软件,然后操作、关闭软件则那个临时文件没有删除,而且是创建的文件名字是“xxx$”的形式,软件退出时,临时文件名字变成“xxx”而且还没有被删除。。求指点
...全文
84 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
duxudai 2011-11-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lfchen 的回复:]
CString strPathName = CAppGlobalFunc::GetInstancePrjPath() + m_pSFCPOU->GetPOUName() + _T("$");
// 这里加一个MessageBox,输出strPathName

strPathName += _T("$");
// 这里加一个MessageBox,输出strPathName

// 也可以……
[/Quote]


工程不方便发,单位不允许,工程也太大了,谢谢你!
不过刚才我看了看这个文件,我觉得不是路径的问题,文件有创建时间、修改时间和访问时间,当我退出的时候这3个时间重新更新为当前的时间了,我怀疑是实际上删除了文件,但是在哪个地方又创建了一次。。
谢谢你喽。。
一条晚起的虫 2011-11-15
  • 打赏
  • 举报
回复
CString strPathName = CAppGlobalFunc::GetInstancePrjPath() + m_pSFCPOU->GetPOUName() + _T("$");
// 这里加一个MessageBox,输出strPathName

strPathName += _T("$");
// 这里加一个MessageBox,输出strPathName

// 也可以把工程发给我看看
duxudai 2011-11-15
  • 打赏
  • 举报
回复
通过编译器打开运行没有问题。。我也走了很多遍了。。找不到原因。。知道原因就好修改了。。
现在是没有头绪。。
duxudai 2011-11-15
  • 打赏
  • 举报
回复
通过编译器打开运行没有问题。。我也走了很多遍了。。找不到原因。。知道原因就好修改了。。
现在是没有头绪。。
Eleven 2011-11-15
  • 打赏
  • 举报
回复
Debug下F10走一遍流程应该就很清楚了吧
duxudai 2011-11-15
  • 打赏
  • 举报
回复
void CSFCDoc::RemoveTempFile()
{
//临时文件的路径
CString strPathName = CAppGlobalFunc::GetInstancePrjPath() + m_pSFCPOU->GetPOUName();
char * pch = strPathName.GetBuffer(strPathName.GetLength());
strPathName.ReleaseBuffer();
strPathName = pch;
strPathName += _T("$");

//查找该临时文件,若找到则删除
CFileFind fileFind;
BOOL bFind = fileFind.FindFile(strPathName);
if (bFind)
{
TRY
{
CFile::Remove(strPathName);
}
CATCH (CFileException, e)
{
e->ReportError();
e->Delete();
}
END_CATCH
}
fileFind.Close();
}
duxudai 2011-11-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lfchen 的回复:]
// 创建和删除部分的代码都贴一下看看
[/Quote]

void CSFCDoc::InitialTempFile()
{
//将SFC的临时文件放在exe所在的目录下
CString strPathName = CAppGlobalFunc::GetInstancePrjPath() + m_pSFCPOU->GetPOUName() + _T("$");
CFile TempFile;
CFileException e;
if (!TempFile.Open(strPathName, CFile::modeCreate | CFile::modeWrite |CFile::shareDenyNone, &e))
{
return;
}

CArchive SaveArchive(&TempFile, CArchive::store | CArchive::bNoFlushOnDelete);
TRY
{
m_SFCPOUUndoList.Serialize(SaveArchive);
m_SFCPOURedoList.Serialize(SaveArchive);
SaveArchive.Close();
TempFile.Close();
}
CATCH_ALL(e)
{
SaveArchive.Close();
TempFile.Abort();
AfxMessageBox("初始化撤销中作临时文件出错", MB_OK|MB_ICONERROR);
e->Delete();
return;
}
END_CATCH_ALL

}
一条晚起的虫 2011-11-15
  • 打赏
  • 举报
回复
// 创建和删除部分的代码都贴一下看看
duxudai 2011-11-15
  • 打赏
  • 举报
回复
不是相对路径,是绝对路径,如果是相对路径那就不会在编译器运行会删除了。。
一条晚起的虫 2011-11-15
  • 打赏
  • 举报
回复
// 调试和直接运行时,工作路径不同。
// 如果你创建删除的文件,用的是相对路径的话,看看是否是这个原因。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧