文件操作

15 篇文章 0 订阅

有變量的文件名方式
-------------------
CString 定義名
定義名.Format("文件名+%d/s/……+……",變量1,變量2,……);
其他操作……
--------------------------------------------------------------------
-------------------------------------------------------
const char* 指向常量的指針,定義指向常量的指針!變量!
利用const char*類型定義的指向常量的指針變量,
不能修改其指向的內存中的內容,但可以修改其本身的值,即變量所保存的內存地址;
char* const 指針!常量!
對於指針常量,必須在其定義的同時賦值;
指針常量表示指針本身是常量,值是常量不可修改,所指向的內容可以修改。
const與char的先後位置並不影響,*的位置至關重要;
const char* 類型的指針(指向常量的指針),其所指向的內容是常量,是不可以修改的,但其指針是可以修改的;
char* const 類型的指針(常量指針),其地址是常量,不可修改,但其指向的內容可以修改。

C語言中要在常量字符串後面放置一個“\0”字符表示字符串結束;
-------------------------------------------------------------------------------
文件的打開
------------
利用FILE結構體進行的,具體實現時:首先利用fopen函數返回一個指向FILE結構體的指針;
函數聲明形式:FILE *fopen(const char* filename,const char *mode)
參數:
filename 指向文件名字符串的常量指針類型,表明將要打開的文件;
mode 指定文件的打開模式:
r——只讀
w——打開空文件寫入,若目標文件存在,內容在打開時清空;
a——寫入,若存在,寫入時將其EOF標記去掉,在末尾添加新數據;若不存在,先創建後寫入;
r+——打開存在的文件進行讀寫操作
w+——打開空文件進行讀寫,若目標文件存在,內容在打開時清空;
a+——讀寫,先去掉其EOF標記,若不存在,先創建;
eg:FILE *pFile = fopen("2.txt","w");
---------------------------------------------------------------------------------------------
文件的寫入
-------------
fwrite函數,共4個參數;
buffer——指向將要被寫入的文件數據;
size——以字節為單位的項的大小;
count——將要被寫入的項的最大數目。
stream——指向FILE類型的指針,該指針可通過fopen函數獲取;
C語言對文件的操作使用了緩衝文件系統;即系統自動為每個正在使用的文件在內存中開闢了
一塊緩衝區域,緩衝區作為中間區域,對文件的讀寫操作,在內存和磁盤文件之間互相傳送。
緩衝區存滿之後做數據交換。
eg:fwrite("http://www.caroline.org",1,strlen("http://www.caroline.org"),pFile);
    

--------------------------------20160907-----------------------------------------------------
文件的關閉
------------
使用fclose函數關閉文件,表示對文件的操作完成,系統將緩衝區內容寫入磁盤文件。
eg:fclose(pFile);

fflush函數
-----------
使用fflush函數刷新緩衝區數據,不關閉文件,可使系統將緩衝區內容寫入磁盤文件。

文件指針定位
--------------
寫入其他數據。C語言文件有一個文件指針,根據對文件的操作來移動位置,始終指向文件下一個將要寫入的位置。
fseek函數將文件指針從當前位置移動到指定位置。
int fseek(FILE *stream,//指向FILE結構體的指針
    long offset,//設定偏移量
    int origin);//指定文件的起始位置SEEK_CUR當前位置SEEK_END文件的結尾處SEEK_SET文件的開始處

文件的讀取:
-------------
先用fopen函數打開文件,得到指向FILE類型的指針,調用fread函數讀取文件內容。
fread函數的第一個參數buffer是指向存放數據緩衝區的指針。
eg:fread(ch,1,100,pFile);
應當在讀取的字符串後面加上“\0”,作為字符串結尾。
1.直接添加
\0就是0
2.利用memset函數將字符數組中所有數據設置為0;
3.用fseek函數將文件指針移動至文件的結尾處,用ftell函數獲取指針當前位置即文件長度;
rewind函數將文件指針重新放置到文件的開始處。其唯一參數是指向FILE結構體的指針。

讀取文件時,應正確的設置文件指針位置。
-----------------------------------------------------------------------------------------
二進制文件與文本文件
-----------------------
若將一個整數賦給一個字符變量,實際上是將該整數作為ASCII碼賦給該字符變量。
文件只是計算機內存以二進制表示的數據在外部存儲介質上的另一種存放形式。對於
文本文件來說,它只是一種特殊形式的文件,它所存放的每一個字節都可以轉換為一個可讀字符。
-------------------------------------------------------------------------------------------
文本方式與二進制方式
-----------------------
當按照文本方式向文件寫入數據時,一旦遇到換行字符(10),則會轉換為“回車—換行”(13、10)
在讀取文件時,一旦遇到“回車換行”,則會轉換為換行字符。
當按照二進制方式向文件中寫入數據時,則會將數據在內存中的存儲形式原樣輸出到文件中。
寫入預讀取文件時,讀寫方式要保持一致。
若都採用二進制方式進行讀寫,則不會出錯,該方式逐字節進行。

文本文件與二進制文件,均可採用二進制方式或文本方式打開,然後進行讀寫。
對於二進制文件,若以二進制方式讀取,會出現問題。

eg:將整數98341寫入文件,在以記事本方式打開時,顯示:98341
方法一:
    FILE *pFile = fopen("4.txt","w");
        char ch[5];
        ch[0] = 9+48;
        ch[1] = 8+48;
        ch[2] = 4+48;
        ch[3] = 3+48;
        ch[4] = 1+48;
        
    fwrite(ch,1,5,pFile);    
    fclose(pFile);
存儲字符的ASCII碼。定義數組即可。
方法二:
直接利用itoa函數將整數轉換為字符串,然後將該字符串寫入文件即可。
        FILE *pFile = fopen("3.txt","w");
        int i = 98341;
        char ch[5];
    itoa(i,ch,10);

    fwrite(ch,1,5,pFile);    
    fclose(pFile);    
}
對於數字字符來說,其ASCII碼大於等於48,小於等於57。
---------------------------------------------------------------------------
-----------------------------C++的文件操作------------------------------
文件寫入
----------
向文件中寫入數據使用ofstream類實現。
構造函數:ofstream(szName 指定將要打開的文件名
        nMode 指定文件的打開模式
        nProt指定文件保護規格說明);
詳見p451;
eg:    ofstream ofs("4.txt");//構造對象
    ofs.write("http://www.caroline.org",strlen("http://www.caroline.org"));//寫入數據
    ofs.close();//調用成員函數關閉文件
系統頭文件使用<>導入,無法識別時可用
#include   <fstream> 
using   namespace   std;
方式。
---------------------------------------------------------------------------------
文件讀取
----------
從文件中讀取數據使用ifstream類實現。構造方法同ofstream。
eg:ifstream ifs("4.txt");//構造對象
    char ch[100];//定義字符數組,保存讀取到的數據
    memset(ch,0,100);
    ifs.read(ch,100);
    ifs.close();
    MessageBox(NULL,ch,NULL,IDM_FILE_READ);
--------------------------------------------------------------------------------------
---------------------------Win32 API 對文件操作的支持-----------------------------

文件的創建和打開
-------------------
CreateFile函數將創建或打開(文件、管道、郵槽、通信資源、磁盤設備#、控制台、目錄(僅打開))
CreateFile(lpFileName 指定對象名稱
    dwDesiredAccess指定對對象的訪問方式
    dwShareMode共享方式0不共享
    lpSecurityAttrbutes指向一個SECURITY_ATTRIBUTES結構的指針。指定文件對象的訪問權限及含稅的文件對象句柄
是否能夠被子進程所繼承。
    dwCreationDisposition指定如何創建文件。
    dwFlagsAndAttributes設置文件屬性和標誌。
    hTemplateFile指定具有GENERIC_READ訪問方式的模板文件句柄。
hTemplateFile必須是使用GENERIC_READ方式打開的,若打開現有文件,該參數被忽略,
若要該參數有效,必須:
1.創建新文件
2.給hTemplateFile參數傳遞的文件句柄必須是使用GENERIC_READ方式打開的。
        )
--------------------------------------------------------------------------------------
文件的寫入
------------
WriteFile函數向文件中寫入數據。
WriteFile(hFile指定要寫入數據的文件句柄。
    lpBuffer指向包含將要寫入文件的數據的緩衝區指針
    nNumberOfBytesToWrite指明要向文件中寫入的字節數。
    lpNumberOfBytesWritten接收實際寫入到文件中的字節數。
    lpOverlapped指向OVERLAPPED結構體的指針
該參數要生效,在利用CreateFile打開文件設置文件屬性時需要添加FILE_FLAG_OVERLAPPED標記,表明該文件需異步訪問。
若未設置,默認為同步IO方式訪問。
    )
eg:
    //定義一個句柄變量
    HANDLE hFile;
    //創建文件
    hFile = CreateFile("5.txt",GENERIC_WRITE,0,NULL,CREATE_NEW,
        FILE_ATTRIBUTE_NORMAL,NULL);
    //接收實際寫入的字節數
        DWORD dwWrites;
    //寫入數據
        WriteFile(hFile,"efweriufrehiurgqehgi",strlen("efweriufrehiurgqehgi"),&dwWrites,NULL);
        //關閉文件句柄
        CloseHandle(hFile);
--------------------------------------------------------------------------------------
文件的讀取Read
------------
ReadFile函數從文件中讀取數據。
ReadFile(hFile指定要寫入數據的文件句柄。
    lpBuffer指向包含將要寫入文件的數據的緩衝區指針
    nNumberOfBytesToRead指明要向文件中寫入的字節數。
    lpNumberOfBytesRead接收實際寫入到文件中的字節數。
    lpOverlapped指向OVERLAPPED結構體的指針
該參數要生效,在利用CreateFile打開文件設置文件屬性時需要添加FILE_FLAG_OVERLAPPED標記,表明該文件需異步訪問。
若未設置,默認為同步IO方式訪問。
    )
eg://定義一個句柄變量
    HANDLE hFile;
    //創建文件
    hFile = CreateFile("5.txt",    GENERIC_READ,0,NULL,OPEN_EXISTING,
        FILE_ATTRIBUTE_NORMAL,NULL);
    //接收實際讀到的數據
    char ch[100];
    //接收實際讀到的字節數
        DWORD dwReads;
    //讀取數據
        ReadFile(hFile,ch,100,&dwReads,NULL);
        //設置字符串結束字符
        ch[dwReads] =0;
        //關閉文件句柄
        CloseHandle(hFile);
        //顯示讀取到的數據
        MessageBox(NULL,ch,NULL,IDM_FILE_READ);
-------------------------------------------------------------------------------------------------
-----------------------------------MFC文件操作-------------------------------------------
CFile基類
-----------------
MFC文件操作基類CFile,提供了沒有緩存的二進制格式的磁盤文件輸入輸出功能。
構造函數之一:CFile(LPCTSTR lpszFileName,指定文件名稱
        UINT nOpenFlags);指定文件的共享和訪問方式
常用方法:Write:
    Read:
    Seek:將文件指針移動到指定位置
    SeekToBegin:
    SeekToEnd:
    GetLength:獲取長度
-------------------------------------------------------------------------------------------------
文件的寫入
-------------
eg:CFile file("6.txt",CFile::modeCreate | CFile::modeWrite);//構造對象
    file.Write("12356479874897465",strlen("12356479874897465"));//訪問方式
    file.Close();//調用方法關閉文件
--------------------------------------------------------------------------------------------
文件的讀取
-------------
eg:    CFile file("6.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(NULL,pBuf,NULL,IDM_FILE_READ);
------------------------------------------------------------------------------------------------
CFileDialog類
----------------
參數:
1.BOOL類型。TRUE,構建一個打開對話框
    FALSE,構建一個“保存為”對話框
2.指定默認的文件擴展名
3.指定顯示在文件對話框中的初始文件名
4.一個或多個標記的組合,允許定制文件對話框,取值與OPENFILENAME結構體中的Flags字段相同
5.一連串的字符串對,指定一個或一組文件過濾器
6.一個CWnd指針,指定文件對話框的父窗口或擁有者窗口
---------------------------------------------------------------------------------------------------
另存為對話框
---------------
eg:    CFileDialog fileDlg(FALSE);//創建對象
    fileDlg.DoModal();//顯示創建的對話框
改變對話框標題可使用:CFileDialog類的數據成員:m_ofn實現。
該數據成員是OPENFILENAME結構體類型,結構體中的lpstrTitle(LPCTSTR類型)指定對話框標題。
eg:寫在DoModle之前:
    fileDlg.m_ofn.lpstrTitle = "另存為";
使用該結構體中的成員:lpstrFilter實現過濾器。是一個指向包含多個過濾字符串對的緩衝區的指針。
規則:
各過濾器字符串對質監局字符串對內部的字符串之間,以“\0”分隔;
最後的過濾器字符串必須以兩個“\0”結尾。
對一個字符串對來說,第一個字符串描述過濾器,第二個字符串表明過濾使用的文件擴展名;
多個擴展名以“:”相隔。
使用該結構體中的成員:lpstrDefExt指定默認擴展名;

保存目的類型文件并寫入數據
-------------------------------
CFileDialog類提供GetPathName和GetFileName獲取用戶輸入的文件名。
GetPathName:返回選擇文件的完整路徑
GetFileName:返回選擇文件的文件名
eg:
    CFileDialog fileDlg(FALSE);//創建對話框對象
    fileDlg.m_ofn.lpstrTitle = "另存為";//改變對話框名稱
    fileDlg.m_ofn.lpstrFilter = "Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0";//設置過濾器
    fileDlg.m_ofn.lpstrDefExt = "txt";//指定默認擴展名
    if(IDOK==fileDlg.DoModal())//顯示對話框
        {
            CFile file(fileDlg.GetFileName(),CFile::modeCreate | CFile::modeWrite);
            file.Write("123456789987654321",strlen("123456789987654321"));
            file.Close();    
        }    
-----------------------------------------------------------------------------------------------------
打開文件對話框
----------------
eg:    CFileDialog fileDlg(    TRUE);//創建對話框對象
    fileDlg.m_ofn.lpstrTitle = "打開";//改變對話框名稱
    fileDlg.m_ofn.lpstrFilter = "Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0";//設置過濾器

    if(IDOK==fileDlg.DoModal())//顯示對話框
        {
            CFile file(fileDlg.GetFileName(),CFile::modeRead);
            char *pBuf;
            DWORD dwFileLen;
            dwFileLen = file.GetLength();
            pBuf = new char[dwFileLen+1];
            pBuf[dwFileLen] = 0;
            file.Read(pBuf,dwFileLen);            
            file.Close();
            MessageBox(NULL,pBuf,NULL,IDM_FILE_READ);
        }
-------------------------------------------------------------------------------------------------------------
-------------------------------------Win.ini文件的訪問------------------------------------------

大部分寫在註冊表中,當軟件啟動時,從註冊表中讀取初始化信息。    
win.ini文件用於存儲初始化信息。
[段名]
鍵名 = 鍵值

---------------------------------------------------------------------------------------------------
Win.ini文件的寫入
-------------------
使用WriteProfileString函數實現向Win.ini文件中寫入初始化信息,其作用是將一個字符串複製到Win.ini文件的指定字段中。
》基於Win32的應用程序應該使用註冊表來存儲初始化信息。
WriteProfileString(lpAppName指向一個以0結尾的字符串指針,該字符包含了將把字符串複製到Win.ini文件中
那個段的段名,若該段不存在,創建。
        lpKeyName指向一個以零結尾的字符串的指針,該字符串包含了一個鍵的名字。
若該鍵在指定的段中不存在,創建。若該參數為NULL,則整個段及其項都被刪除。
        lpString指向一個以0結尾的字符串的指針,該字符串被寫入。若該參數為NULL,則參數lpKeyName指定的鍵被刪除。

)

eg:在CFileApp類的InitInstance函數中添加代碼,利用WriteProfileString函數將數據信息寫入。
::WriteProfileString("123456789987654321","kelly","caroline");
全局作用域標識符“::”
---------------------------------------------------------------------------------------------------------
------------------------------------------2016.09.08----------------------------------------------------
Win.ini文件的讀取
-------------------
獲取Win.ini文件中保存的初始化信息,可利用Win32API提供的GetProfileString函數來實現。
GetProfileString(
        lpAppName指向一個空終止的字符串的指針,該字符串指定含有所需鍵的段。
        lpKeyName指向一個空終止的字符串的指針,該字符串包含了一個鍵的名字。與該鍵相關聯的字符串將被獲取。
        lpDefault指向一個空終止的默認字符串。若參數lpKeyName所指定的鍵不存在於Win.ini文件中,則函數
GetProfileString將使用默認字符串複製至參數
        lpReturnedSring所指向的緩衝區中。
        lpReturnedSring指向一個緩衝區的指針,該緩衝區將接收穫得的字符串。
        nSize指定參數lpReturnedSring所指向的緩衝區的大小,以字節為單位。
)
CWinApp類提供的GetProfileString函數含有三個參數,分別指定將要讀取的段名、項名和項的默認值。該函數返回從註冊表中或Win.ini文件中
獲得的字符串。
eg:    SetRegistryKey(_T("本機 AppWizard 所產生的應用程式"));//此處可修改註冊表父節點名
    
    //向Win.ini文件中寫入信息,創建一個新段,名為123456……654321,在其上創建一個新鍵,鍵名為kelly,鍵值為Caroline。
    ::WriteProfileString("123456789987654321","kelly","caroline");

    //讀取Win.ini文件中的數據
    CString str;
    //GetBuffer指定字符串長度,此處設為100
    ::GetProfileString("123456789987654321","kelly","caroline",str.GetBuffer(100),100);
    //用全局函數,因為CWinApp類並非派生於Wnd,沒有MessageBox函數。
    AfxMessageBox(str);    
    
    //向註冊表中寫入信息,註冊表用regedit命令打開。
    WriteProfileString("123456789987654321","kelly","caroline");
    //從註冊表中獲取數據。
    CString str;
    str = GetProfileString("123456789987654321","kelly");
    AfxMessageBox(str);    
---------------------------------------------------------------------------------------------------------------
------------------------------------------註冊表編程--------------------------------------
創建鍵
--------
RegCreateKey函數,創建指定的註冊表項。若存在,打開。
    
RegCreateKey(
    hKey指向當前打開表項的句柄,或註冊表中已有句柄
    lpSubKey指向一個空終止的字符串指針,指示這個函數將打開或創建的表項的名稱。
    phkResult返回值,指向一個變量的指針,用來接收創建或打開的表項的句柄。
當不再需要此返回的註冊表項句柄時,調用RegCloseKey函數來關閉該句柄。
)
----------------------------------------------------------------------------------------------------
打開鍵
---------
RegOpenKey打開註冊表中的一個鍵。
RegOpenKey(
    hKey指向當前打開表項的句柄,或註冊表中已有句柄
    lpSubKey指向一個空終止的字符串指針,指示這個函數將打開或創建的表項的名稱。
    phkResult指向一個變量的指針,該變量用來保存此函數所打開的註冊表項的句柄。
當不再需要此返回的註冊表項句柄時,調用RegCloseKey函數來關閉該句柄。
)
------------------------------------------------------------------------------------------------------
寫入註冊表
-------------
RegSetValue設置指定註冊表項的默認值或者未命名值的數據。
》在註冊表中,對值來說,包含三個部分:值名稱、值類型和值本身。
RegSetValue(
    hKey指向當前打開表項的句柄,或註冊表中已有句柄
    lpSubKey指向一個空終止的字符串指針,指示這個函數將打開或創建的表項的名稱。若未設定,則為默認。
    phkResult指向一個變量的指針,該變量用來保存此函數所打開的註冊表項的句柄。
當不再需要此返回的註冊表項句柄時,調用RegCloseKey函數來關閉該句柄。
    dwType指示將被存儲的數據類型,必須為REG_SZ型,即字符串類型。若要存儲為其他類型用RegSetValueEx函數
    lpData指向一個空終止的字符串,該字符串包含了要為指定項的默認值設置的數據。
    cbData指示lpData參數所指向的字符串大小,以字節為單位,不包括終止空字符。
)

RegSetValueEx設置註冊表項下不是默認值。
RegSetValueEx(
    hKey指向當前打開表項的句柄,或註冊表中已有句柄
    lpValueName指向一個字符串的指針,該字符串包含了欲設置值的值名稱,
    Reserved保留,必須為0.    
    dwType指示將被存儲的數據類型.
    lpData指向一個緩衝區,該緩衝區包含了要為指定值名稱存儲的數據。
    cbData指示lpData參數所指向的字符串大小,以字節為單位,不包括終止空字符。
)

------------------------------------------------------------------------------------------------------------
從註冊表中讀數據
-------------------
RegQueryValue函數獲得指定註冊表項默認的值或未命名的值相關的數據。
RegQueryValue(
    hKey指向當前打開表項的句柄,或註冊表中已有句柄
    lpSubKey指向一個空終止的字符串指針,指示這個函數將打開或創建的表項的名稱。
    lpValue返回值,指向一個緩衝區,用來獲得與指定子項默認值相關的一個字符串。
    lpcbValue指向一個變量,指定用此參數指定的buffer大小。
    )
當第三個參數為NULL,第四個非NULL時,該函數返回存儲數據的大小。
若使用該函數時不知道將要獲取的數據大小,可以先調用一次,獲取大小,動態分配內存
再次調用得到數據。
RegQueryValueEx(
    hKey指向當前打開表項的句柄,或註冊表中已有句柄
    lpValueName指向一個以0結尾的字符串的指針,該字符串包含了欲設置值的值名稱,
    lpReserved保留,必須為NULL.    
    lpType指向一個變量的指針。
    lpData指向一個緩衝區,該緩衝區包含了要為指定值名稱存儲的數據。
    lpcbData指示lpData參數所指向的字符串大小,以字節為單位,不包括終止空字符.
    )
------------------------------------------------------------------------------------------------------
實例源代碼:
//寫入
HKEY hKey;
RegCreateKey(HKEY_LOCAL_MACHINE,"Software\\http://12345678895226516.org\\admin",&hKey);
RegSetValue(hKey,NULL,REG_SZ,"caroline",strlen("caroline"));
RegCloseKey(hKey);
再向註冊表中寫入軟件信息時,通常都是在HKEY_LOCAL_MACHINE分支下寫入的。

//讀取
LONG lValue;
RegQueryValue(HKEY_LOCAL_MACHINE,"Software\\http://12345678895226516.org\\admin",NULL,&lValue);
char *pBuf = new char[lValue];
RegQueryValue(HKEY_LOCAL_MACHINE,"Software\\http://12345678895226516.org\\admin",pBuf,&lValue);
MessageBox(NULL,pBuf,NULL,IDM_FILE_READ);

//不使用默認量
//寫入
HKEY hKey;
RegCreateKey(HKEY_LOCAL_MACHINE,"Software\\http://12345678895226516.org\\admin",&hKey);
RegSetValue(hKey,NULL,REG_SZ,"caroline",strlen("caroline"));
DWORD dwAge = 30;
RegSetValueEx(hKey,"age",0,REG_DWORD,(CONST BYTE*)&dwAge,4);
RegCloseKey(hKey);
//讀取
    HKEY hKey;
    RegOpenKey(HKEY_LOCAL_MACHINE,"Software\\http://12345678895226516.org\\admin",&hKey);
    DWORD dwType;
    DWORD dwValue;
    DWORD dwAge;
    RegQueryValueEx(hKey,"age",0,&dwType,(LPBYTE)&dwAge,&dwValue);
    CString str;
    str.Format("age = %d",dwAge);
    MessageBox(NULL,str,NULL,IDM_FILE_READ);

------------------------------------------------2016.09.09---------------------------------------------------------
-----------------------------------------------------------------------------------------------------
//自定義.ini文件的讀寫
--------------------------
WritePrivateProfileString(
LPCTSTR lpAppName,
 LPCTSTR lpKeyName,
 LPCTSTR lpString,
 LPCTSTR lpFileName
 );
第一個參數是INI文件中的一個字段名;
第二個參數是lpAppName,下的一個鍵名;
第三個參數是鍵值;
第四個參數是INI文件名,帶擴展名。
eg:WritePrivateProfileString("Student","Name",StrName,"c:\\setting.ini");

GetPrivateProfileString(string lpszSection,string lpszKey,string lpszDefault, lpsz ReturnBuffer, cchReturnBuffer, lpszFile);
第一個參數是INI文件中的一個字段名;
第二個參數是lpAppName,下的一個鍵名;
第三個參數是在找不到時,lpszkey返回的默認值;
第四個參數是接收INI文件中的值的CString?象,即接收???;
第五個參數是接收???的大小;
第六個參數是INI文件名,帶擴展名。
eg:GetPrivateProfileString("DBInfo","IP","",IP.GetBuffer(MAX_PATH),MAX_PATH,iniFilePath);

GetPrivateProfileInt(lpApplicationName String,lpKeyName String,nDefault Long, lpFileName String)
返回值即?所?取的?果
第一個參數是INI文件中的一個字段名;
第二個參數是lpAppName下的一個鍵名;
第三個參數是指定?目未找到?返回的默?值;
第四個參數是INI文件名,帶擴展名。 
-----------------------------------------------------------------------------------------------------------------------------------------
寫入Win.ini文件
    for(int i = 0;i<ui.line;i++)
            {
        //鍵值
        CString Uname;
        Uname = m_DataList.GetItemText(i,0);    //在控件中取值,賦給字符串變量
        CString g1time;    
        g1time = m_DataList.GetItemText(i,1);
        CString g2time;    
        g2time = m_DataList.GetItemText(i,2);
        //段名
        CString num = "";
        num.Format("%d",i);//轉換函數,將int類型轉換為string類型
        //將數據寫入.ini文件
        ::WritePrivateProfileString(num,"name",Uname,".\\ListData.ini");    
        ::WritePrivateProfileString(num,"g1",g1time,".\\ListData.ini");    
        ::WritePrivateProfileString(num,"g2",g2time,".\\ListData.ini");    
                             }
------------------------------------------------------------------------------------------------------------
1.刪除文件
2.讀取文件數據
-------------------------------------------------------------------------------
刪除文件
---------------
CFile   TempFile;   
TempFile.Remove("ListData.ini"); 

-------------------------------------------------------------------------------
獲取文件路徑
----------------
CString server_ip;
 CString des="";
 ::GetCurrentDirectory(MAX_PATHLENGTH,des.GetBuffer(MAX_PATHLENGTH));
 des.ReleaseBuffer();
 des+="\\config.ini";
 GetPrivateProfileString("PhoneDemo","Server_IP","",server_ip.GetBufferSetLength(15),15,des);
 server_ip.ReleaseBuffer();
--------------------------------------------------------------------------------------------------
逐行讀取txt文件數據;

//建立文件
CStdioFile file;
file.Open("fftdata.txt",CFile::modeRead);//打?要?取的txt文件
while (file.ReadString(pchData))//逐行讀取數据,存入pchData

//查找文件類
CFileFind 
使用:
CFileFind 對象;
對象.FindFile(文件名);
返回,成功為0;

GetStringFromFile("文件中的字符串",字符串變量,文件名)
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值