`
wsql
  • 浏览: 11795374 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

写UNICODE格式的文本日志文件(UNICODE编码)

 
阅读更多

转载:http://blog.csdn.net/abcpanpeng/article/details/1481740

HANDLE CreateUnicodeFile(CStringW strPath)
{
HANDLE hFile=NULL;
//创建文件
hFile=CreateFile(strPath,
GENERIC_WRITE|GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_DELETE|FILE_SHARE_WRITE,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(INVALID_HANDLE_VALUE==hFile)
{
AfxMessageBox(FormartLastError(GetLastError()));
return NULL;
}
DWORD dwValue=0;
DWORD dwSize=0;
dwSize = GetFileSize (hFile, NULL) ;
if (dwSize == 0xFFFFFFFF)
{
AfxMessageBox(FormartLastError(GetLastError()));
CloseHandle(hFile);
return NULL;
}
if(dwSize==0)
{
TCHAR p=0xfeff;//UNICODE文件开头标志
if(!WriteFile(hFile,&p,sizeof(TCHAR),&dwValue,NULL))
{
AfxMessageBox(FormartLastError(GetLastError()));
CloseHandle(hFile);
return NULL;
}
}
return hFile;
}

BOOL WriteLogFile(CStringW sLogMsg)
{
CStringW sFileName;
if(sFileName.IsEmpty())
{
sFileName=GetCurrentPath();//获取应用程序所在目录
sFileName=sFileName+TEXT("log//");//创建log文件夹
CheckDirectory(sFileName);
CString sdate;
CTime tt=CTime::GetTickCount();
CString strtt=tt.Format("log_%Y-%m-%d.txt");
sFileName=sFileName+strtt;
}
HANDLE hFile=CreateUnicodeFile(sFileName);//创建UNICODE格式文件
if(NULL==hFile)
{
AfxMessageBox(FormartLastError(GetLastError()));
return FALSE;
}
DWORD dwValue=0;
DWORD dwSize=0;
dwSize = GetFileSize (hFile, NULL) ;
if (dwSize == 0xFFFFFFFF)
{
AfxMessageBox(FormartLastError(GetLastError()));
CloseHandle(hFile);
return FALSE;
}
long logcount=0;
int iLength=0;
DWORD ftype=GetFileType(hFile);
if(ftype!=FILE_TYPE_DISK)//检测文件是否为磁盘文件
return FALSE;
TCHAR buff[10];
wmemset((WCHAR*)buff,L'0',10);
if(dwSize!=2)//如果已经写日志
{
//移动至文件开头sizeof(TCHAR)处
DWORD p=SetFilePointer(hFile,sizeof(TCHAR),NULL,FILE_CURRENT);
if(p==0xFFFFFFFF)
{
return FALSE;
}
//读取日志记录数 00000000
if(!ReadFile(hFile,buff,10*sizeof(TCHAR),&dwValue,NULL))
{
AfxMessageBox(FormartLastError(GetLastError()));
CloseHandle(hFile);
return FALSE;
}
logcount=wcstol((WCHAR*)buff,NULL,10);
}
CStringW sCount;
logcount=logcount+1;
sCount.Format(TEXT("%d"),logcount);
for(int i=0;i<sCount.GetLength();i++)
buff[8-sCount.GetLength()+i]=sCount[i];
buff[8]='/r';
buff[9]='/n';
SetFilePointer(hFile,sizeof(TCHAR),NULL,FILE_BEGIN);//移动至文件开头2
//写日志记录数
if(!WriteFile(hFile,buff,(int)10*sizeof(TCHAR),&dwValue,NULL))
{
AfxMessageBox(FormartLastError(GetLastError()));
CloseHandle(hFile);
return FALSE;
}
SetFilePointer(hFile,NULL,NULL,FILE_END);//移动至文件尾部
CTime t=CTime::GetTickCount();
CString sMsg=t.Format("[%Y-%m-%d %H:%M:%S] ");
sLogMsg=sMsg+sLogMsg+TEXT("/r/n");
iLength = sLogMsg.GetLength();
//写日志
if(!WriteFile(hFile,sLogMsg.GetBuffer(),(int)iLength*sizeof(TCHAR), &dwValue, NULL))
{
AfxMessageBox(FormartLastError(GetLastError()));
CloseHandle(hFile);
return FALSE;
}
//关闭文件
CloseHandle(hFile);
return TRUE;
}


分享到:
评论

相关推荐

    大文本缓存读取Unicode逐行转UTF-8存储

    题目:用VC6.0实现对unicode格式的文本文件高效率按行读取 要求: (1)实现以下接口 BOOL OpenStringFile(CString path); BOOL ReadStringFile(&CString str); //一次读取文件中的一行 BOOL CloseStringFile(); (2...

    文本网页编码批量转换工具 v1.5.zip

    文本网页编码批量转换工具是网页文件、文本文件编码批量转换的工具,可以批量将文本类文件批量转换为utf-8 ansi(gb2312) unicode等编码。 文本网页编码批量转换工具 v1.5更新日志 新版新增功能:UTF-8可以转换为...

    IIS日志分析工具LogViewer v2.0

    它占用内存小,支持任意大小的文件(4GB或者更大),支持高亮某行文字(例如警告,错误),支持Unicode名字,支持查看的编码:ANSI, OEM, Unicode LE, Unicode BE等等,支持文件搜索、打印。IIS日志分析工具...

    自己编写的一个txt的工具类

    目前只提供在当前的上一级文件夹中创建log文件夹并生成指定的log文件logname为log文件名,tmp1为写入内容 5:根据配置文件来决定删除的日志大小,需要ConfClass.dll的支持 6:自动判断txt文件的编码格式,...

    rar压缩软件.rar

    输出文件格式依赖于 -sc 开关。 如果输出文件名没有指定,注释数据会被发送到标准输出设备。 例子: 1) rar cw oldarch comment.txt 2) rar cw -scuc arc unicode.txt 3) rar cw arc d 从压缩文件中...

    精易编程助手

    精易编程助手功能如下: 网页分析 → 穿透框架彻底分析网页元素,让你网页填表操作更加简单 ...修复 - 编码转换 - 增加“编码_Unicode到Ansi_文本型”和“编码_Ansi到Unicode_文本型”,编码出来的格式如:精易论坛

    中文简体压缩软件RAR 6.0

    等写到日志文件中。在 Unix 中,这个文件名为 .rarlong,放在用户的 home 目录中。 在 Windows 中,它名为 rar.log,放在 rar.exe 文件相同的目录中。开关 -ilog 允 许改变默认的日志名。 固实压缩的文件...

    IIS日志分析工具LogViewer_V20目前最实用的SEO辅助工具

    【基本介绍】 ...它占用内存小,支持任意大小的文件(4GB或者更大),支持高亮某行文字(例如警告,错误),支持Unicode名字,支持查看的编码:ANSI, OEM, Unicode LE, Unicode BE等等,支持文件搜索、打印。

    WinRAR_4.0.exe

    输出文件格式依赖于 -sc 开关。 如果输出文件名没有指定,注释数据会被发送到标准输出设备。 例子: 1) rar cw oldarch comment.txt 2) rar cw -scuc arc unicode.txt 3) rar cw arc d 从压缩文件中...

    Logviewer.zip

    LogViewer Pro是一款文本...它占用内存小,支持任意大小的文件(4GB或者更大),支持高亮某行文字(例如警告,错误),支持Unicode名字,支持查看的编码:ANSI, OEM, Unicode LE, Unicode BE等等,支持文件搜索、打印

    WINRAR5.0正式注册版

    UTF-16 小端字节序编码被用于 RAR 和 WinRAR 日志文件 rar.log 中,所以 Unicode 文件名能在日志文件中正确存储。WinRAR 会自动删除非 Unicode 格式的旧 rar.log 文件来避免同一日志文件中混合不同的编码。...

    CEIWEI CommMonitor 串口监控工具12.7 最新版

    还提供过滤、搜索、数据导出和强大的数据拦截功能,可以将指定端口的数据流、控制流信息拦截并将监控日志数据输出为HTML、CSV、Ansi/Unicode文本 格式数据,并支持自动保存(重定向到文件),供分析之用。 CEIWEI ...

    WinRAR(64位)破解版v5.00 烈火简体中文版

    18. UTF-16小端字节序编码被用于RAR和WinRAR日志文件rar.log中,所以Unicode文件名能在日志文件中正确存储。 19.命令行'r' (修复)命令可以有一个附加的目标路径\参数来定义修复好的压缩文件的目标文件夹。

    易语言百度云盘解析

    易语言百度云盘解析源码,百度云盘解析,交互日志回调函数,百度网盘地址解析,取文本中间内容,彗星_URL解码_UTF8,彗星_URL编码_UTF8,Ansi转Utf8,Utf8转ansi,Unicode转Utf8,Ansi转Unicode,Unicode转ansi,Utf8转Unicode,...

    LogViewer Pro 2.2.0(含key)

    LogViewer Pro是一款文本...它占用内存小,支持任意大小的文件(4GB或者更大),支持高亮某行文字(例如警告,错误),支持Unicode名字,支持查看的编码:ANSI,OEM,Unicode LE,Unicode BE等等,支持文件搜索、打印。

    精易编程助手 v2.36 官方绿色版.rar

    方便测试 修复 - 窗口探测 - 生成代码,有的窗口会生成失败的BUG 修复 - 编码转换 - 增加“编码_Unicode到Ansi_文本型”和“编码_Ansi到Unicode_文本型”,编码出来的格式如:精易论坛 增加 - 网页分析 - 增加网页树...

    milkt:我的文字记录分析工具-开源

    :)-使用“过滤器”的强大文本日志分析工具-为日志文件中的特定行添加/删除其他注释(在再次打开日志文件时保存并重新加载注释)-自动书签保存/恢复日志文件- Unicode / UTF-8支持文本文件-有关字体更改,剪贴板复制...

    LogViewer Pro v1.8.6

    它占用内存小,支持任意大小的文件(4GB或者更大),支持高亮某行文字(例如警告,错误),支持Unicode名字,支持查看的编码:ANSI, OEM, Unicode LE, Unicode BE等等,支持文件搜索、打印。软件未注册,每次启动...

    aspnet公共类cs文件.rar

    ----------Database-------------- 1.DataTable帮助类(DataTableHelper.cs)2.Access数据库文件操作辅助类(JetAccessUtil.cs)3.常用的Access数据库Sql...将原始字串转换为unicode,格式为\u.\u.( UnicodeHelper.cs)

Global site tag (gtag.js) - Google Analytics