MFC简单小问题,诸位帮帮忙吧,感激不尽!!

时间:2022-06-04 17:37:32
是这样的,我在程序使用
CFile(name,CFile::modeCreate|CFile::modeWrite |CFile::modeNoTruncate)
创建一个文件并写入数据,为什么在程序退出近3分钟的时间内这个文件都不可以被其他程序(如:记事本本)访问呢,写入的数据量并不大,我使用的是win2000,这个和文件系统有关系么?

如解决本问题,坚决给分,马上结贴,同时可能还有另一问题求教
谢谢!

13 个解决方案

#1


CFile(name,CFile::modeReadWrite)

#2


CFile file;
if(file.Open(name,CFile::modeCreate | CFile::modeWrite | CFile::modeNoTruncate))
{
    file.Write(...);
    file.Close();
}

#3


谢谢两位的帮助!

to  bohut(伯虎):
    CFile::modeReadWrite 可以 和CFile::modeNoTruncate 一起使用么?我还是需要NoTruncate的。

to lanstar200(玛雅哥布林:)

    我在程序退出时确实已经close了,不知道为什么还有那么长的时间延迟。

#4


关掉文件句柄

#5


to  bohut(伯虎):
    我用CFile::modeReadWrite 标志位试了试,不行,用notepad打开时:can not open the file.用ultraEdit打开解释是:访问时发生共用违规。

#6


to w100(志)
      How??我想CFile::close()内已封装了关闭文件句柄的操作了。

#7


CFile::asyshare...记得不太清楚了..
就是可以共享使用文件的标志.具体请查MSDN

#8


退出程序的时候,最好先关闭文件。

#9


你只用 modeReadWrite 然后CLOSE,再用记事本也打不开吗? 不应该啊,是不是你别的地方不对

#10


CFile::ShareDenyNone
CFile::ShareDenyRead
CFile::ShareDenyWrite
以上这些是设置共享类型的。可以和上面的NoTruncate,ReadWrite等等合用。

#11


file.Flush();
file.close();
试试 

#12


CFile  f;
if(!f.Open(filename, CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite))
   AfxMessageBox("创建文件失败");

//文件写入操作
..............

f.Close();

试试

#13


谢谢诸位的帮忙,问题已解决了,主要原因应该是如  memory_xj(青蛙) 兄所说,缺少一个flush 操作。

#1


CFile(name,CFile::modeReadWrite)

#2


CFile file;
if(file.Open(name,CFile::modeCreate | CFile::modeWrite | CFile::modeNoTruncate))
{
    file.Write(...);
    file.Close();
}

#3


谢谢两位的帮助!

to  bohut(伯虎):
    CFile::modeReadWrite 可以 和CFile::modeNoTruncate 一起使用么?我还是需要NoTruncate的。

to lanstar200(玛雅哥布林:)

    我在程序退出时确实已经close了,不知道为什么还有那么长的时间延迟。

#4


关掉文件句柄

#5


to  bohut(伯虎):
    我用CFile::modeReadWrite 标志位试了试,不行,用notepad打开时:can not open the file.用ultraEdit打开解释是:访问时发生共用违规。

#6


to w100(志)
      How??我想CFile::close()内已封装了关闭文件句柄的操作了。

#7


CFile::asyshare...记得不太清楚了..
就是可以共享使用文件的标志.具体请查MSDN

#8


退出程序的时候,最好先关闭文件。

#9


你只用 modeReadWrite 然后CLOSE,再用记事本也打不开吗? 不应该啊,是不是你别的地方不对

#10


CFile::ShareDenyNone
CFile::ShareDenyRead
CFile::ShareDenyWrite
以上这些是设置共享类型的。可以和上面的NoTruncate,ReadWrite等等合用。

#11


file.Flush();
file.close();
试试 

#12


CFile  f;
if(!f.Open(filename, CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite))
   AfxMessageBox("创建文件失败");

//文件写入操作
..............

f.Close();

试试

#13


谢谢诸位的帮忙,问题已解决了,主要原因应该是如  memory_xj(青蛙) 兄所说,缺少一个flush 操作。