关于CFile的一个问题

south2000 2003-11-21 10:11:26
我产生一个文件,想把它保存,保存有两种情况。一种是在对话框中写入文件的名字,这样这个文件就保存了,好办。另一种情况是,我在对话框中可以选择已经存在的文件,把新文件添加到后面,请问该如何办?
我使用了CFileDialog dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"数据(*.dat)|*.dat|所有文件(*.*)|*.*||");在这样情况下,对于的一种情况是很容易实现的。当想对第二种情况时候,比如已经存在一个文件叫my1.dat,点击保存时候,我可以在“保存对话框”里面看到那个已经存在的文件my1.dat,如果我选上my1.dat,系统就提示“是否要替换”。现在我希望是新文件添加在my1.dat的后面,该如何做啊?
CFile file;
CFileException fe;
CString strPathName;
if(dlg.DoModal()==IDOK)
{
strPathName=dlg.GetPathName();
VERIFY(file.Open(strPathName,CFile::modeCreate|CFile::modeReadWrite|CFile::shareExclusive|CFile::typeBinary,&fe));
//如果我把CFile::modeCreate去掉,那么第一中情况就实现不成了
//然后使用file.Write来进行写数据
}
...全文
51 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lashengcrh 2003-11-21
  • 打赏
  • 举报
回复
使用CFILE如何打开并口,设置并口,操作打印机(使用ESC命令)。
如何确定黑标位置。
我使用START的MP500打印机。
Atry 2003-11-21
  • 打赏
  • 举报
回复
其实系统提示“是否要替换”是在 if(dlg.DoModal()==IDOK) 这一句里面,然后dlg.GetPathName()传回文件名,也不会真的替换。

如果你把你
CFileDialog dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"数据(*.dat)|*.dat|所有文件(*.*)|*.*||");
去掉OFN_OVERWRITEPROMPT就不会提示了
Bandry 2003-11-21
  • 打赏
  • 举报
回复
CFileDialog 一种是选择文件,一种是另存文件,你怎么会选到不存在的文件了?
就算你选到了文件,也不用重载这个dialog,用cfile判断一下strPathName这个文件是否存在就行了
AlvaChin 2003-11-21
  • 打赏
  • 举报
回复
重载CFileDialog啊,判断一下输入或者选择的文件是否存在就可以了。

=============================================================
百尺竿头,卧薪尝胆
south2000 2003-11-21
  • 打赏
  • 举报
回复
搞定啦,谢谢AgedBOY(禁欲的情种)!
AgedBOY 2003-11-21
  • 打赏
  • 举报
回复
哎呀呀,好不容易等来一个自己能够回答的问题了


CFile::modeCreate|CFile::modeReadWrite|CFile::shareExclusive|CFile::typeBinary

后面加上

|CFile::modeNoTruncate即可

不用谢不用谢^^
south2000 2003-11-21
  • 打赏
  • 举报
回复
首先,谢谢大家了!

其实,我最要紧的是能够把新文件添加到老文件的后面。

我在file.Write前面用file.SeekToEnd();也不管用的,新内容并没有添加到“对话框里选的my1.dat”里面,仅仅是把my1.dat的内容清空,把新内容写到my1.dat中去而已。
icer202 2003-11-21
  • 打赏
  • 举报
回复
在写入文件之前调用file.SeekToEnd();定位到文件的末尾,(写入文件不替换。)

16,551

社区成员

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

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

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