2011-01-16 12:26:43|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:C/C++, MFC, Visual Studio|来源:唯设编程网
在程序中碰到这个一段代码:
讲的是CFILE类的文件操作,故参考MSDN系统学习一下(翻译了一下英文):
CFile file; CFileException fe; //打开文件 if(!file.Open(lpszPathName,CFile::modeRead|CFile::shareDenyWrite,&fe)) { ReportSaveLoadException(lpszPathName,&fe,FALSE,AFX_IDP_FAILED_TO_OPEN_DOC); return FALSE; }
CFIIE类是MFC的文件类的基类,它直接提供无缓冲的二进制 磁盘I/O设备,并且通过它的派生类可以提供对text文件和内存文件的存取。CFILE与CArchive类一起提供对MFC序列化的支持。
CFILE类和它的派生类之间的等级关系,允许你的程序通过多态的CFILE界面对所有文件类进行操作。比如内存文件,或者磁盘文件以及类似的。
CFILE和它的派生类用于执行一般的磁盘I/O操作。而OFSTREAM或者其它的微软 iostream类则是用于把格式化text输出到磁盘文件上去。
通常,CFILE类的构造过程中会自动打开磁盘文件,在析构函数中则会自动关闭文件。你可以使用静态成员函数来询问文件的状态而不用打开文件。
使用CFILE类必须包含 #include
• CFile::modeNoTruncate 可以同modeCreate. 一起用,如果要创建的文件已经存在,并不把它长度设置为0,因而这个文件获取或者作为一个新建文件或者作为一个已存在文件打开。这个功能往往很好用,比如说,当你需要打开一个设置文件,但是你并不清楚这个文件是否已经存在。
• CFile::modeRead 打开文件仅仅供读
• CFile::modeReadWrite 打开文件供读写
• CFile::modeWrite 打开文件只供写
• CFile::modeNoInherit 阻止这个文件被子进程继承
• CFile::shareDenyNone 打开这个文件同时允许其它进程读写这个文件。如果文件被其它进程以incompatibility模式打开,这是create操作会失败。
• CFile::shareDenyRead 打开文件拒绝其它任何进程读这个文件。如果文件被其它进程用compatibility模式或者是读方式打开,create操作失败。
• CFile::shareDenyWrite 打开文件拒绝其它任何进程写这个文件。如果文件被其它进程用compatibility模式或者是写方式打开,create操作失败。
• CFile::shareExclusive 以独占方式打开这个文件,不允许其它进程读写这个文件。 Construction fails if the file has been opened in any other mode for read or write access, even by the current process.
• CFile::shareCompat 这个标志在32位的MFC中无效。 This flag maps to CFile::shareExclusive when used in CFile::Open.
• CFile::typeText 设置成对回车换行对有特殊处理的文本模式(仅用在派生类中)
• CFile::typeBinary 设置二进制模式(仅用在派生类中)