[MFC] CFile文字檔寫入

因為是個小工具,所以就簡單的利用CFile來寫Log,暫存到使用者的Temp目錄;不過因為是unicode,所以寫檔和轉換參數的時候要注意一下而已。

因為是個小工具,所以就簡單的利用CFile來寫Log,暫存到使用者的Temp目錄;不過因為是unicode,所以寫檔和轉換參數的時候要注意一下而已。不定參數的寫法還是第一次用XD


#pragma once

#include "stdafx.h"
#include "Windows.h"

static void WriteLog(LPCTSTR msg, ...)
{
	TCHAR pszTmepPath[MAX_PATH];
	GetTempPath(MAX_PATH, pszTmepPath);
	CString pszFileName;
	pszFileName.Format(_T("%sTool.log"), pszTmepPath);

	//unicode參數處理
	va_list args;
	va_start(args, msg);
	wchar_t* buffer = new wchar_t[1024];
	vswprintf(buffer, msg, args);

	//當前時間
	CTime t = CTime::GetCurrentTime();
	CString csDate = t.Format(_T("%m/%d %H:%M "));
	csDate.AppendFormat(buffer);

	CFile myFile;
	CFileException fileException;

	//如果檔案不存在就建立,存在就開啟
	if (myFile.Open(pszFileName, CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite, &fileException))
	{
		try
		{
			if(myFile.GetLength() == 0)
			{
				//為了unicode
				myFile.Write("\xff\xfe", 2);
			}

			myFile.SeekToEnd();
			myFile.Write(csDate, _tcslen(csDate) * 2);
			myFile.Close();
		}
		catch(TCHAR* err)
		{
			TRACE(err);
		}

	}

	OutputDebugString(csDate);
	delete []buffer;
}

 

Dotblogs 的標籤: ,