MFC学习 文件操作注册表操作
c读写文件
void CFileView::OnRead() { FILE *pFile = fopen("1.txt", "r"); /*char ch[100 * 1024]; memset(ch, 0, sizeof(ch)); fread(ch, 1, sizeof(ch), pFile); fclose(pFile); MessageBox(ch);*/ fseek(pFile, 0, SEEK_END); int len = ftell(pFile); char *pBuf; pBuf = new char[len + 1]; rewind(pFile); fread(pBuf, 1, len, pFile); pBuf[len] = '\0'; fclose(pFile); MessageBox(pBuf); //二进制读写与文本读写不同, 文本以行为单位的13(0xD) 10(0xA) } void CFileView::OnWrite() { FILE *pFile = fopen("1.txt", "a+"); fseek(pFile, 0, SEEK_SET); fwrite("test", 1, strlen("test"), pFile); fflush(pFile); fclose(pFile); }
c++读写文件
void CFileView::OnReadcplusplus() { std::fstream fs("2.txt"); char ch[200]; memset(ch, 0, 100); //fs.read(ch, 100); fs >> ch; fs.close(); MessageBox(ch); } void CFileView::OnWritecplusplus() { std::fstream fs("2.txt", std::ios::in | std::ios::out | std::ios::trunc); fs.write("test", strlen("test")); fs << "test123" << std::endl; fs.close(); }
win32API读写文件
void CFileView::OnReadapi() { HANDLE hFile; hFile = ::CreateFile("3.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); char ch[500]; DWORD dwReads; ::ReadFile(hFile, ch, 500, &dwReads, NULL); ch[dwReads] = 0; CloseHandle(hFile); MessageBox(ch); } void CFileView::OnWriteapi() { HANDLE hFile; hFile = ::CreateFile("3.txt", GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL); DWORD dwWrites; ::WriteFile(hFile, "mytest", strlen("mytest"), &dwWrites, NULL); CloseHandle(hFile); }
MFC的CFile类读写文件
void CFileView::OnReadmfc() { CFile file("4.txt", CFile::modeRead); char *pBuf; DWORD dwFileLen; dwFileLen = file.GetLength(); pBuf = new char[dwFileLen + 1]; pBuf[dwFileLen] = 0; file.Read(pBuf, dwFileLen); file.Close(); MessageBox(pBuf); } void CFileView::OnWritemfc() { CFile file("4.txt", CFile::modeCreate | CFile::modeWrite); char ch[200] = "tester"; file.Write(ch, strlen(ch)); file.Close(); }
注册表操作
void CFileView::OnReadreg() { CString str; LONG lSize; //读取项的缺省值 RegQueryValue(HKEY_LOCAL_MACHINE, "Software\\test\\admin", str.GetBuffer(200), &lSize); MessageBox(str); //读取项的值 HKEY hKey; RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\test\\admin", &hKey); DWORD dwType; DWORD dwValue; DWORD dwAge; RegQueryValueEx(hKey, "age", 0, &dwType, (LPBYTE)&dwAge, &dwValue); CString str2; str2.Format("age=%d", dwAge); MessageBox(str2); } void CFileView::OnWritereg() { HKEY hKey; RegCreateKey(HKEY_LOCAL_MACHINE, "Software\\test\\admin", &hKey); //第二个参数为键名, 如果没有, 设置缺省的值 //第三个参数只能是REG_SZ(字符串型), 如果存放其它型的要用RegSetValueEx RegSetValue(hKey, NULL, REG_SZ, "wangwu", strlen("wangwu")); //写整数 DWORD dwAge = 30; RegSetValueEx(hKey, "age", 0, REG_DWORD, (CONST BYTE*)&dwAge, 4); RegCloseKey(hKey); } void CFileView::OnDeleteregitem() { //删除项Key //RegDeleteKey(HKEY_LOCAL_MACHINE, "Software\\test\\admin"); //删除值 HKEY hKey; RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\test\\admin", &hKey); RegDeleteValue(hKey, "age"); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义