• 储存应用程序的配置信息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  //只能是负数了  也就是只能前向移动 

  • 相关阅读:
    笔记一 Redis基础
    (转载)你一定要努力,但千万别着急
    (转载)[jQuery]使用Uploadify(UploadiFive)多文件上传控件遇到的坑
    Redis学习笔记~StackExchange.Redis实现分布式Session
    转载 mvc中 将session保存到redis中 实现共享session
    webconfig配置信息转发
    2019.9.25-二分查找代码(递归和非递归方法)
    2019.9.24-常见排序算法效率比较【图】
    2019.9.24-归并排序(代码)
    2019.9.24-快速排序实现(完整代码)
  • 原文地址:https://www.cnblogs.com/a9999/p/3429416.html
Copyright © 2020-2023  润新知