1. 文件API
1.1. 打開關(guān)閉文件
CreateFile
HANDLE CreateFile(
LPCTSTR lpFileName, //指向文件名的指針
DWORD dwDesiredAccess, //訪問(wèn)模式(寫/讀)
DWORD dwShareMode, //共享模式
LPSECURITY_ATTRIBUTES lpSecurityAttributes, //指向安全屬性的指針
DWORD dwCreationDisposition, //如何創(chuàng)建
DWORD dwFlagsAndAttributes, //文件屬性
HANDLE hTemplateFile //用于輔助文件句柄
);
如果函數(shù)成功,返回一個(gè)打開的指定文件的句柄
CloseHandle
1.2. 文件的讀寫
ReadFile
BOOL ReadFile(
HANDLE hFile, //要讀取的文件的句柄,必須為打開的
LPVOID lpBuffer, //接收文件數(shù)據(jù)的緩沖區(qū)指針
DWORD nNumberOfBytesToRead, //文件中要讀取數(shù)據(jù)的大小
LPDWORD lpNumberOfBytesRead, //從文件中讀出的數(shù)據(jù)大小
LPOVERLAPPED lpOverlapped //指向OVERLAPPED結(jié)構(gòu)的指針
);
如果函數(shù)正確執(zhí)行,則返回TRUE,否則返回FALSE
WriteFile
BOOL WriteFile(
HANDLE hFile, //要寫入的文件句柄,必須為打開的
LPCVOID lpBuffer, //指向要寫入的數(shù)據(jù)的緩沖區(qū)大小
DWORD nNumberOfBytesToWrite, //要寫入的字節(jié)數(shù)
LPDWORD lpNumberOfBytesWritten, //返回實(shí)際寫入文件的字節(jié)數(shù)
LPOVERLAPPED lpOverlapped //指向OVERLAOOED結(jié)構(gòu)的指針
);
如果函數(shù)正確執(zhí)行,則返回TRUE,否則返回FALSE
1.3. 獲取文件大小
GetFileSize
DWORD GetFileSize(
HANDLE hFile, //訪問(wèn)的文件句柄,已打開
LPDWORD lpFileSizeHigh //高字節(jié)地址
);
如果函數(shù)執(zhí)行成功,函數(shù)返回文件大小的低32位的值,而如果文件很大,則參數(shù)lpFileSiezHigh返回高32位的值。如果函數(shù)執(zhí)行失敗,返回0xFFFFFFFF。
1.4. 文件的查找與遍歷
FindFirstFile
HANDLE FindFirstFile(
LPCTSTR lpFileName, //表示文件名的字符串
LPWIN32_FIND_DATA lpFindFileData //指向WIN32_FIND_DATA結(jié)構(gòu)的指針
//存儲(chǔ)所查找的文件的屬性
);
函數(shù)執(zhí)行成功,返回一個(gè)有效的文件查找句柄,并且填充WIN32_FIND_DATA結(jié)構(gòu)
WIN32_FIND_DATA
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes; //文件的屬性
FILETIME ftCreationTime; //文件創(chuàng)建時(shí)間
FILETIME ftLastAccessTime; //最后訪問(wèn)時(shí)間
FILETIME ftLastWriteTime; //最后修改時(shí)間
DWORD nFileSizeHigh;
DWORD nFileSizeLow; //大小
DWORD dwOID;
TCHAR cFileName[MAX_PATH]; //文件名稱
} WIN32_FIND_DATA;
FindNextFile
根據(jù)有效的文件查找句柄調(diào)用FindNextFile()函數(shù)進(jìn)行下一個(gè)文件的查找。
BOOL FindNextFile(
HANDLE hFindFile, //為有效的文件查找句柄,如果函數(shù)執(zhí)行 //成功,會(huì)被賦予下一個(gè)文件的查找句柄
LPWIN32_FIND_DATA lpFindFileData //同上
);
如果文件查找操作完成,需要調(diào)用函數(shù)FindClose()關(guān)閉文件查找句柄。
1.5. 打開文件夾
SHBrowseForFolder

/**//**
* @brief 選擇打開的文件夾
* @param pchPath 返回選擇的文件夾路徑
* @remark 調(diào)用SHBrowseForFolder函數(shù)
* @return 返回true表示執(zhí)行成功
*/
bool KFile::GetFolder(TCHAR* pchPath)


{
if (NULL == pchPath)

{
assert(0);
return false;
}

BROWSEINFO bi;
ZeroMemory(&bi, sizeof(BROWSEINFO));
LPMALLOC pMalloc;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
if (pidl != NULL)

{
//從LPITEMIDLIST取出路徑
SHGetPathFromIDList(pidl, pchPath);
if (SUCCEEDED(SHGetMalloc(&pMalloc)))

{
pMalloc->Free(pidl);
pMalloc->Release();
}
return true;
}
return false;
}
1.6. 打開文件與保持文件
GetOpenFileName

/**//**
* @brief 選擇打開的文件
* @param hWnd 所屬窗口句柄
* @param pchPath 返回選擇的文件路徑
* @remark 調(diào)用GetOpenFileName函數(shù)
* @return 返回true表示執(zhí)行成功
*/
bool KFile::GetOpenFile(HANDLE hWnd, TCHAR* pchPath)


{
if (NULL == pchPath)

{
assert(0);
return false;
}

OPENFILENAME Ofn;
pchPath[0] = L'\0';
ZeroMemory(&Ofn, sizeof(Ofn));
Ofn.lStructSize = sizeof(OPENFILENAME);
Ofn.hwndOwner = m_hWnd; //所有者對(duì)話框窗口的句柄
Ofn.lpstrFilter = SUFFIX_NAME;
Ofn.lpstrFile= pchPath;
Ofn.lpstrFileTitle = NULL;
Ofn.lpstrInitialDir = NULL;
Ofn.nMaxFile = MAX_PATH;
Ofn.Flags = OFN_SHOWHELP | OFN_OVERWRITEPROMPT;
return GetOpenFileName(&Ofn);
}

OPENFILENAME 結(jié)構(gòu)體細(xì)看http://baike.baidu.com/view/2175167.htm
GetSaveFileName
類似GetOpenFileName
posted on 2009-07-28 17:44
longshen 閱讀(702)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
VC++