zoukankan      html  css  js  c++  java
  • 储存应用程序的配置信息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:WINDOWSTEST.EXE 
    则: 
       (1)GetPathName();取文件名全称,包括完整路径。取回C:WINDOWSTEST.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  //只能是负数了  也就是只能前向移动 

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴
    Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴
    Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴
    Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴
    Java实现 蓝桥杯VIP 算法提高 士兵排队问题
    Java实现 蓝桥杯VIP 算法提高 士兵排队问题
    Java实现 蓝桥杯VIP 算法提高 士兵排队问题
    Java实现 蓝桥杯VIP 算法提高 士兵排队问题
    Java实现 蓝桥杯VIP 算法提高 数字黑洞
    Minifilter微过滤框架:框架介绍以及驱动层和应用层的通讯
  • 原文地址:https://www.cnblogs.com/a9999/p/3429416.html
Copyright © 2011-2022 走看看