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();
}
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了,不知道为什么还有那么长的时间延迟。
to bohut(伯虎):
CFile::modeReadWrite 可以 和CFile::modeNoTruncate 一起使用么?我还是需要NoTruncate的。
to lanstar200(玛雅哥布林:)
我在程序退出时确实已经close了,不知道为什么还有那么长的时间延迟。
#4
关掉文件句柄
#5
to bohut(伯虎):
我用CFile::modeReadWrite 标志位试了试,不行,用notepad打开时:can not open the file.用ultraEdit打开解释是:访问时发生共用违规。
我用CFile::modeReadWrite 标志位试了试,不行,用notepad打开时:can not open the file.用ultraEdit打开解释是:访问时发生共用违规。
#6
to w100(志)
How??我想CFile::close()内已封装了关闭文件句柄的操作了。
How??我想CFile::close()内已封装了关闭文件句柄的操作了。
#7
CFile::asyshare...记得不太清楚了..
就是可以共享使用文件的标志.具体请查MSDN
就是可以共享使用文件的标志.具体请查MSDN
#8
退出程序的时候,最好先关闭文件。
#9
你只用 modeReadWrite 然后CLOSE,再用记事本也打不开吗? 不应该啊,是不是你别的地方不对
#10
CFile::ShareDenyNone
CFile::ShareDenyRead
CFile::ShareDenyWrite
以上这些是设置共享类型的。可以和上面的NoTruncate,ReadWrite等等合用。
CFile::ShareDenyRead
CFile::ShareDenyWrite
以上这些是设置共享类型的。可以和上面的NoTruncate,ReadWrite等等合用。
#11
file.Flush();
file.close();
试试
file.close();
试试
#12
CFile f;
if(!f.Open(filename, CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite))
AfxMessageBox("创建文件失败");
//文件写入操作
..............
f.Close();
试试
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();
}
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了,不知道为什么还有那么长的时间延迟。
to bohut(伯虎):
CFile::modeReadWrite 可以 和CFile::modeNoTruncate 一起使用么?我还是需要NoTruncate的。
to lanstar200(玛雅哥布林:)
我在程序退出时确实已经close了,不知道为什么还有那么长的时间延迟。
#4
关掉文件句柄
#5
to bohut(伯虎):
我用CFile::modeReadWrite 标志位试了试,不行,用notepad打开时:can not open the file.用ultraEdit打开解释是:访问时发生共用违规。
我用CFile::modeReadWrite 标志位试了试,不行,用notepad打开时:can not open the file.用ultraEdit打开解释是:访问时发生共用违规。
#6
to w100(志)
How??我想CFile::close()内已封装了关闭文件句柄的操作了。
How??我想CFile::close()内已封装了关闭文件句柄的操作了。
#7
CFile::asyshare...记得不太清楚了..
就是可以共享使用文件的标志.具体请查MSDN
就是可以共享使用文件的标志.具体请查MSDN
#8
退出程序的时候,最好先关闭文件。
#9
你只用 modeReadWrite 然后CLOSE,再用记事本也打不开吗? 不应该啊,是不是你别的地方不对
#10
CFile::ShareDenyNone
CFile::ShareDenyRead
CFile::ShareDenyWrite
以上这些是设置共享类型的。可以和上面的NoTruncate,ReadWrite等等合用。
CFile::ShareDenyRead
CFile::ShareDenyWrite
以上这些是设置共享类型的。可以和上面的NoTruncate,ReadWrite等等合用。
#11
file.Flush();
file.close();
试试
file.close();
试试
#12
CFile f;
if(!f.Open(filename, CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite))
AfxMessageBox("创建文件失败");
//文件写入操作
..............
f.Close();
试试
if(!f.Open(filename, CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite))
AfxMessageBox("创建文件失败");
//文件写入操作
..............
f.Close();
试试
#13
谢谢诸位的帮忙,问题已解决了,主要原因应该是如 memory_xj(青蛙) 兄所说,缺少一个flush 操作。