C/C++学习笔记之文件读写函数

序言

学习笔记,以备。

代码

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lion Long

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值