写记事本程序遇到的文件Bug

来源:互联网 发布:移动商城源码 编辑:程序博客网 时间:2024/05/22 06:53
file.Open(szFile,CFile::modeCreate|CFile::modeWrite|CFile::typeText|CFile::modeReadWrite);
CFile::modeCreate 直接构建创建一个新文件。如果该文件已经存在,则文件内容自动被清零。
 
CFile::modeWrite 以只写方式打开文件。
CFile::typeText 以文本方式打开。
CFile::modeReadWrite 以可读可写方式打开文件。

文件打开方式错了。

DeBug Assertion Failed断言错误,

引起断言错误的因素:应该是你传递给MFC的参数不对!

                                    语句中含有逻辑错误!。。。

//////////////////////////////////////////////文件打开方式http://blog.csdn.net/hechunjiao2011/article/details/6645678
CFile::modeCreate 直接构建创建一个新文件。如果该文件已经存在,则文件内容自动被清零。
CFile::modeNoTruncate 该值一般modeCreate组合使用。如果创建的文件已经存在,那么它不会被清零。因而该文件能可靠的打开,或者新建一个文件或者打开一个现存文件。这对于打开一个可能存在可能不存在的设置文件十分有用。该选项通用可用于CStdioFile。
CFile::modeRead 以只读方式打开文件。
CFile::modeReadWrite 以可读可写方式打开文件。
CFile::modeWrite 以只写方式打开文件。
CFile::modeNoInherit 阻止文件被子进程继承。
CFile::shareDenyNone 以不拒绝其他进程对文件的读写方式打开。如果文件已经被其他进程以compatibility模式打开,则文件创建失败。
CFile::shareDenyRead 以拒绝其他进程对文件读的方式打开。如果文件已经被其他进程以compatibility模式或读打开,则文件创建失败。
CFile::shareDenyWrite 以拒绝其他进程对文件写的方式打开。如果文件已经被其他进程以compatibility模式或写打开,则文件创建失败。
CFile::shareExclusive 以exclusive方式打开,拒绝其他进程对文件的读写。如果该文件已经被不管任何进程以任何方式打开都构建失败。
CFile::shareCompat 此标志在32位MFC中无效。该标志当使用CFile::Open时映射为CFile::shareExclusive。
CFile::typeText 以文本方式打开。
CFile::typeBinary 以二进制方式打开(只在派生类中使用)。
CFile::osNoBuffer 系统打开文件不开系统缓存。可查看Platform SDK中CreateFile的FILE_FLAG_NO_BUFFERING。
CFile::osWriteThrough 通过任何快速缓存并直接写磁盘的标志。可查看Platform SDK中CreateFile的FILE_FLAG_WRITE_THROUGH。
CFile::osRandomAccess 随机访问文件方式。系统使用这种方式优化文件缓冲区。
CFile::osSequentialScan 从开头到结尾的顺序访问文件方式。系统使用这种方式来优化文件缓冲区。可查看Platform SDK中CreateFile的FILE_FLAG_SEQUENTIAL_SCAN。

以前觉得这些参数无关紧要,现在做文本的加密解密等时突然发现,其实失之毫厘谬以千里,最大的问题就是回车换行,在二进制文件里是0D0A,而在文本文件里读写时只有一个0A,这在加密时直接影响分组,基本上导致从第一个回车换行符开始就全乱了,所以我的程序的问题应该就在这儿吧。


 
 
原创粉丝点击