序言
学习笔记,以备。
代码
1、文件写操作(新建/覆盖/追加
/*****************************************************************************
*
* ENTRY POINT: SETFileContent
* SaveMode: GENERIC_WRITE / FILE_APPEND_DATA
*****************************************************************************/
BOOL SETFileContent(LPTSTR FileName, DWORD SaveMode, LPBYTE Buffer, DWORD
Buffersize)
{
BOOL rc;
HANDLE hFile;
DWORD RWsize, DMethod;
if (SaveMode == GENERIC_WRITE) {
DMethod = CREATE_ALWAYS;
} else if (SaveMode == FILE_APPEND_DATA){
DMethod = OPEN_ALWAYS;
} else {
return FALSE;
}
hFile = CreateFile((LPTSTR)FileName, SaveMode, 0, NULL, DMethod,
FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE) return FALSE;
rc = WriteFile(hFile, Buffer, Buffersize, &RWsize, NULL);
CloseHandle(hFile);
return rc;
}
2、文件读操作
/*****************************************************************************
*
* ENTRY POINT: GETFileContent
*
*****************************************************************************/
LPBYTE GETFileContent(LPTSTR FileName, ULONG maxLen, BOOL bAddEOF)
{
HANDLE hFile;
DWORD RWsize;
static BYTE *Buffer;
hFile = CreateFile((LPTSTR)FileName, GENERIC_READ, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE) return 0;
if (maxLen == 0) maxLen = GetFileSize(hFile, NULL);
if (bAddEOF) {
Buffer = (LPBYTE)MALLOC(maxLen+2);
ReadFile(hFile, Buffer, maxLen, &RWsize, NULL);
Buffer[maxLen] = 0;
Buffer[maxLen+1] = 0;
} else {
Buffer = (LPBYTE)MALLOC(maxLen);
ReadFile(hFile, Buffer, maxLen, &RWsize, NULL);
}
CloseHandle(hFile);
return Buffer;
}
使用
1、文件写操作(新建/覆盖/追加)
BYTE *Buffer;
覆盖(文件不存在则新建)
SETFileContent(“TEST.TXT”, GENERIC_WRITE , Buffer, sizeof(Buffer));
追加(文件不存在则新建)
SETFileContent(“TEST.TXT”, FILE_APPEND_DATA, Buffer, sizeof(Buffer));
2、文件读操作
BYTE *Buffer;
Buffer = GETFileContent(“TEST.TXT”, 0, TRUE);
if(Buffer)
FREE(Buffer);
备注:
maxLen: 0,表示讀取全部
bAddEOF:
讀取文字檔至字串LPTSTR,會產生無字串結尾錯誤,TRUE表示加入結尾’\0’
结论
2019/10/21