标题:问一下open函数的参数的问题
只看楼主
zhipeng0117
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2005-9-15
 问题点数:0 回复次数:2 
问一下open函数的参数的问题
读文件的CFile::Open的第一个参数是要打开的文件名,但是如果用字符串便是的话,"..."里面只能是当前路径下的一个文件,而不能指定盘符,文件夹等确定的一个文件如"E:\data\test.dat"这样的字符串参数就会出错。C++的fstream 类也是同样的问题。这是怎么回事啊?我确实得打开其他文件夹的文件的话该怎么办?
搜索更多相关主题的帖子: 参数 open 函数 文件 
2006-04-13 19:47
xuyijin
Rank: 1
等 级:新手上路
威 望:1
帖 子:90
专家分:0
注 册:2006-4-13
得分:0 
我也遇到这样的问题,肯请大虾指教!谢谢了!

初学java,希望各位大虾多多指教!!
2006-04-13 22:35
赵博闻
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-9-20
得分:0 

我也是新手大家探讨。
首先如果要输入路径的话要用“\\”如:E:\\FileName.txt。一个“\”构造器无法解析
你也可以采用这样的方式,在头文件(。h)中写这样一段
const LPCCSRT FilePath = _T("你的文件路径");
然后在。cpp中
CFile filedate;
filedate.OPen(FilePath,CFile::modeRead|CFile::modeCreate|CFile::modeNoTruncate,NULL);
我觉得会更好,改也容易。具体参数含义见下面的转载

CFIIE类是MFC的文件类的基类,它直接提供无缓冲的二进制 磁盘I/O设备,并且通过它的派生类可以提供对text文件和内存文件的存取。CFILE与CArchive类一起提供对MFC序列化的支持。

CFILE类和它的派生类之间的等级关系,允许你的程序通过多态的CFILE界面对所有文件类进行操作。比如内存文件,或者磁盘文件以及类似的。

CFILE和它的派生类用于执行一般的磁盘I/O操作。而OFSTREAM或者其它的微软 iostream类则是用于把格式化text输出到磁盘文件上去。

通常,CFILE类的构造过程中会自动打开磁盘文件,在析构函数中则会自动关闭文件。你可以使用静态成员函数来询问文件的状态而不用打开文件。

使用CFILE类必须包含 #include <afx.h>

cfile:: open

virtual BOOL Open( LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL );

返回值:成功为非0,否则为0,仅当返回值为0时pError参数才有意义

参数:

lpszFileName 需要打开文件的路径字符串,这个路径可以是相对路径也可以是绝对路径,或者是网络名字(UNC)

nOpenFlags 一个UINT定义文件的存取共享模式。它指定文件打开时可以采取的操作。你可以使用”|"号来组合多个选项。文件的一个存取权限和一个共享选项是必须要指定的。而modeCreate 和modeNoInherit是可选的。

具体如下:

CFile::modeCreate 让构造器创建一个新文件,如果那个文件已经存在,把那个文件的长度重设为

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 设置二进制模式(仅用在派生类中)

pError-------一个指向一个已经存在的file-exception类的指针,它会接收文件失败操作的具体状态。

注明:

OPEN默认是用在CFILE的构造器中,这两个函数提供了一个对文件的安全访问方式,即使发生了错误也会正确的回报错误。


2007-09-20 15:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-57348-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016842 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved