[乱]mfc与sdk笔记[九]
文件操作,配置文件? 注册表操作。
- 基本写入,打开文件
- FILE *file = fopen(); //打开文件
- fwrite(); //写入数据,文件指针指向下一个字节
- //c语言对文件的操作使用了缓冲文件系统。所以还需要关闭缓冲区
- fclose(file);
- //或者刷新缓冲区.
- fflush(file);
- fseek(); //移动文件指针
- //--------------------------------------------------
- //打开文件
- fread();
- memset();//用字符设定一个buffer
- ftell();//得到文件指针当前的位置
- 文件操作类:ofstream
- #include <fstream>
- //创建文件写入文件
- ofstream ofs("a.txt");
- ofs.write("abc",strlen("abc"));
- ofs.close();
- //打开文件
- ifstream ifs("a.txt");
- char ch[100];
- memset(ch,0,100);
- ifs.read(ch,100);
- ifs.close();
- WIN32 API操作文件
- HANDLE CreateFile(); //功能很强大,可以打开或者创建的有控制台,通讯资源,目录,磁盘设备,文件,邮槽,管道。返回句柄。
- HANDLE hFile;
- hFile = CreateFile("ab.txt",GENERIC_WRITE,0,NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL);//这样就创建了一个文件了.
- char ch[100];
- DWORD dwReads;
- ReadFile(hFile,ch,100,&dwReads,NULL);
- ch[dwReads]=0;
- CloseHandle(hFile);
- //写入文件
- WriteFile();
- Win32中对文件操作的类CFile,它是基础文件类的基类,它直接提供了没有缓存的二进制的磁盘输入输出文件。
- //创建文件
- CFile file("a.txt",CFile::modeCreate | CFile::modeWrite);
- file.Write("mrzenix.com",strlen("mrzenix.com");
- file.Close();
- //读取文件
- CFile file("a.txt",CFile::modeRead);
- char *pBuf;
- DWORD dwFileLen;
- dwFileLen = file.GetLength();
- pBuf = new char[dwFileLen+1];
- pBuf[dwFileLen]=0;
- file.Read(pBuf,DwFileLen);
- 打开,另存为文件对话框CFileDialog
- //保存为对话框
- CFileDialog fileDlg(FALSE);
- fileDlg.m_ofn;//这个结构体里面可以修改一些东西。
- fileDlg.m_ofn.lpstrTitle = "标题";
- fileDlg.m_ofn.lpstrFilter = "Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0"; //example Filter
- fileDlg.m_ofn.lpstrDefExt="txt"; //缺省
- if(IDOK==fileDlg.DoModel())
- {
- CString Pathname = fileDlg.GetPathName(); //全路径
- CString Filename = fileDlg.GetFileName(); //文件名
- }
- //打开文件对话框只要把前面的FALSE改成TRUE就好了。
- 写入初始信息
- ::WriteProfileString(); //仅仅用来兼容16位操作系统写入win.ini的.[sdk]
- SetRegistryKey(_T("mrzenix")); //增加注册表[mfc]
- GetProfileString();//获得注册表的信息[mfc]
- 对注册表的编程
- HKEY hkey; //句柄
- RegCreateKey(HKEY_LOCAL_MACHINE,"Software\\mrzenixSoft\\string",&hkey); //创建指定注册表项[sdk]
- //注册表项有值的名称,值的类型,值的本身
- RegSetValue(hkey,NULL,REG_SZ,"abcde",strlen("abcde")); //设置表项默认值,第二参数决定那个key
- LONG lValue;
- RegQueryValue(HKEY_LOCAL_MACHINE,"Software\\mrzenixSoft\\string",NULL,&lValue); //这个方式得到该注册表项的长度
- char *pBuf = new char[lValue];
- RegQueryValue(HKEY_LOCAL_MACHINE,"Software\\mrzenixSoft\\string",pBuf,&lvalue);//这个可以获取到这个值
- DWORD age = 30;
- RegSetValueEx(hkey,"age",REG_DWORD,(CONST BYTE*)&age,4); //跟上面差不多
- HKEY HK;
- RegOpenKey(hkey,NULL,&HK);//打开一个key到一个句柄
- DWORD dwType;
- DWORD dwValue;
- DWORD dwAge;
- RegQueryValueEx(HK,"age",&dwType,(LPBYTE)&dwAge,&dwValue); //读取
- CString str;
- tr.Format*:age=%d",dwAge);
- //还有Reg开头的其它函数
- RegDeleteKey(); // 像这些等
- RegCloseKey(hkey);//关闭句柄
- 附
- CString::GetBuffer();//可以返回一个LPTSTR,使用后需要ReleaseBuffer