储存应用程序的配置信息ini实现方式
1.C语言中文件操作。
2.C++语言中的文件操作。
3.Win32 API函数文件操作。
4.MFC CFile类文件操作。
5.MFC CFileDialog类的文件操作。
6.注册表文件操作。 下面我来详细说明一下各种文件操作方法:
1. C语言中文件操作.需要包含的头文件STDIO.H
写入文件:
FILE *pfile=fopen("C.txt","w");//以写的方式打开C.txt文件。
fwrite("Welcome to VCFans!",1,strlen("Welcome to VCFans!"),pfile);//将数据写入文件。
fflush(pfile);//刷新缓冲区。将缓冲区数据写入文件
fclose(pfile);//关闭文件
读取文件:
FILE *pfile=fopen("C.txt","r");//以读的方式打开C.txt文件。
char FileContent[100];
memset(FileContent,0,100);//初始化FileContent
fread(FileContent,1,100,pfile);//将刚才C.txt文件中的内容读入到FileContent
MessageBox(FileContent);//输出结果
fclose(pfile);//关闭文件
2.C++语言中的文件操作。需要包含的头文件fstream.h
写入文件:
ofstream ofs("C++.txt");//建立ofstream对像。
ofs.write("Welcome to VCFans!",strlen("Welcome to VCFans!"));//将数据写入文件
ofs.close();//关闭ofstream对象。
读取文件:
ifstream ifs("C++.txt");
char FileContent[100];
memset(FileContent,0,100);//初始化FileContent
ifs.read(FileContent,100);//读取数据
ifs.close();//关闭ifstream对像
MessageBox(FileContent);//输出结果
3.Win32 API函数文件操作。需要包含的头文件winbase.h,需要类库:kernel32.lib
写入文件:
HANDLE hFile;//定义一个句柄。
hFile=CreateFile("API.txt",
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
CREATE_NEW,
FILE_ATTRIBUTE_NORMAL,
NULL);//使用CreatFile这个API函数打开文件
DWORD Written;
WriteFile(hFile,"Welcome to VCFans!",strlen("Welcome to VCFans!"),&Written,NULL);//写入文件
CloseHandle(hFile);//关闭句柄
读取文件:
HANDLE hFile;//定义一个句柄。
hFile=CreateFile("API.txt",
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);//使用CreatFile这个API函数打开文件
DWORD dwDataLen;
char FileContent[100];
ReadFile(hFile,FileContent,100,&dwDataLen,NULL);//读取数据
FileContent[dwDataLen]=0;//将数组未尾设零。
CloseHandle(hFile);//关闭句柄
MessageBox(FileContent);//输出结果
4.MFC CFile类文件操作。需要包含的头文件afx.h
写入文件:
CFile file("CFile.txt",CFile::modeCreate| CFile::modeWrite);//构造CFile对象
file.Write("Welcome to VCFans !",strlen("Welcome to VCFans !"));//写入数据到文件
file.Close();//关闭CFile对象。
读取文件:
CFile file("CFile.txt",CFile::modeRead);//构造CFile对象
char FileContent[100];
memset(FileContent,0,100);//初始化FileContent
file.Read(FileContent,100);//读入数据
file.Close();//关闭文件对象
MessageBox(FileContent);//输出数据
5.MFC CFileDialog类的文件操作。需要包含的头文件Afxdlgs.h
写入文件:
CFileDialog fileDlg(FALSE,"txt","CFileDialog.txt");//建立CFileDialog对象
if(IDOK==fileDlg.DoModal())
{
CFile file(fileDlg.GetFileName(),CFile::modeCreate| CFile::modeWrite);//构造CFile对象
file.Write("Welcome to VCFans !",strlen("Welcome to VCFans !"));//写入数据到文件
file.Close();
};
读取文件:
CFileDialog fileDlg(TRUE,"txt","CFileDialog.txt");//建立CFileDialog对象
if(IDOK==fileDlg.DoModal())
{
CFile file(fileDlg.GetFileName(),CFile::modeRead);//构造CFile对象
char FileContent[100];
memset(FileContent,0,100);//初始化FileContent
file.Read(FileContent,100);//读入数据
file.Close();//关闭文件对象
MessageBox(FileContent);
};
6.注册表文件操作。
写入注册表:
HKEY hKey;
DWORD dwSex=1;
RegCreateKey(HKEY_LOCAL_MACHINE,"Software\\vcfans\\reg",&hKey);//打开注册表键
RegSetValueEx(hKey,"sex",0,REG_DWORD,(CONST BYTE*)&dwSex,4);//写入注册表数据
RegCloseKey(hKey);//关闭注册表键
读注册表:
HKEY hKey;
RegOpenKey(HKEY_LOCAL_MACHINE,"Software\\vcfans\\reg",&hKey);//打开注册表键
DWORD dwType;
DWORD dwValue;
DWORD dwSex;
RegQueryValueEx(hKey,"sex",0,&dwType,(LPBYTE)&dwSex,&dwValue);//查询注册表数据
RegCloseKey(hKey);//关闭注册表键
CString str;
str.Format("sex=%d",dwSex);
MessageBox(str);//以上代码在VC6.0,Windows 2K server下编译通过
写一个代码出现了问题,fread一个wav文件到一定长度时总是不成功,后来把fopen(m_str_sourcepath,"rt")变成fopen(m_str_sourcepath,"rb")就好了。
下面是一些文件操作的文章,感谢这些同志…^_^
转发:名字忘了,呵呵
取得文件名
{
CString FilePathName;
CFileDialog dlg(TRUE);///TRUE为OPEN对话框 ,FALSE为 保存 对话框
if(dlg.DoModal()==IDOK)
FilePathName=dlg.GetPathName();
}
相关信息:CFileDialog 用于取文件名的几个成员函数:
假如选择的文件是C:\WINDOWS\TEST.EXE
则:
(1)GetPathName();取文件名全称,包括完整路径。取回C:\WINDOWS\TEST.EXE
(2)GetFileTitle();取回TEST
(3)GetFileName();取文件全名:TEST.EXE
(4)GetFileExt();取扩展名EXE
打开文件
CFile file("C:\HELLO.TXT",CFile::modeRead);///只读方式打开
///CFile::modeRead可改为 CFile::modeWrite(只写),CFile::modeReadWrite(读写),CFile::modeCreate(新建)
例子:
{
CFile file;
file.Open("C:\HELLO.TXT",CFile::modeCreate|Cfile::modeWrite);
...
...
}
移动文件指针
file.Seek(100,CFile::begin);///从文件头开始往下移动100字节
file.Seek(-50,CFile::end);///从文件末尾往上移动50字节
file.Seek(-30,CFile::current);///从当前位置往上移动30字节
file.SeekToBegin();///移到文件头
file.SeekToEnd();///移到文件尾
对于CFileDialog 使用可参照下面
:通用对话框的使用
大家都遇到过CFileDialog文件对话框吧,它的参数让人头疼.下面解除大家的头疼.
先在使用文件对话框的类的类定义文件中加入对象定义CFileDialog m_MyOpenDialog(TRUE,"avi","*.avi")。随后,在需要使用该对话框的地方加入以下语句:
m_MyOpenDialog.Domodal();
就可以预览所有.avi文件.
其调用规则为:
函数原型:
CFileDialog(BOOL bOpenFileDialog,LPCTSTR lpszDefExt=NULL,LPCTSTR lpszFileName=NULL,DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPR OMPT,LPCTSTR lpszFilter=NULL,CWnd * pParentWnd
=NULL);
参数说明:
bOpenFileDialog:为TRUE或FALSE。TRUE为打开文件;FALSE为保存文件。
lpszDefExt :为缺省的扩展名。
lpszFileName :为显示在文件名组合框的编辑框的文件名,一般可选NULL
dwFlags :为对话框风格,一般为OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,即隐藏只读选项和覆盖已有文件前提示。
LpszFilter :为下拉列表枢中显示文件类型。
pParentWnd :一般可选NULL。
例如:在文件类型列表框的编辑框要显示“可执行文件(*.exe)”,而在它的下拉列表框中列出“视频文件(*.avi)、All Files(*.*)”内容,则变量定义如下:CFileDialog m_MyOpenDialog(TRUE,"exe",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"可执行文件(*.exe) | *.exe|视频文件(*.bat) | *.bat |All Files (*.*) | *.* ||",NULL);
注:看看没有*.*后的||会是什么效果.
关于:fseek
fseek()函数有三个参数
第一个是文件的指针
第二个是偏移量 也就是指针移动的字符数
//这个参数必须是L类型
//如果是负数 表示指针反向移动(向文件头的方向)
第三个是偏移量的相对开始位置
0 表示从文件开始处 偏移 L
1 表示从当前位置 偏移 L
2 表示从文件末尾 偏移 L //只能是负数了 也就是只能前向移动