CStdioFile

CStdioFile是继承于CFile,VS中我们常用Unicode字符集和CString,用CFile操作并不一定方便,尤其是当我们写日志的时候。CStdioFile则专门定义了WriteString函数,非常方便。

//头文件
#include <locale>
#include <Windows.h>

//////////////写日志函数里面////////////////
//参数1:CString filename;文件名和路径
//参数2:CString sLog;需要写入的日志信息

//整理下日志内容,加上时间
CTime tm = CTime::GetCurrentTime();
CString str;
str = tm.Format(L"\n\n%Y\\%m\\%d %H:%M:%S");  
str = str + _T(":") + sText;

CStdioFile fFileDate;
fFileDate.Open(sFileName,CFile::modeNoTruncate | CFile::modeCreate | CFile::modeWrite | CFile::typeText); 
// 打开文件参数项 
/* CFile::modeCreate --- 如果文件不存在则创建,如果文件存在则打开文件并清空文件内容 CFile::modeCreate | CFile::CFile::modeNoTruncate --- 如果文件不存在则创建,如果文件存在则打开文件并保留文件内容 CFile::shareDenyNone --- 允许其它进程对文件读写 CFile::shareDenyRead --- 不允许其它进程对文件进行读操作 CFile::shareDenyWrite --- 不允许其它进程对文件进行写操作 CFile::shareExclusive --- 以独占模式打开文件,不允许其它进程对文件进行读写 */
setlocale(LC_CTYPE,"chs"); 
/*Unicode字符下,CStdioFile的Writestring无法写入中文 添加#include <locale>头文件 char* old_locale = _strdup( setlocale(LC_CTYPE,NULL) ); setlocale( LC_CTYPE, "chs" );//设定 file.WriteString(_T("abc中文"));//正常写入 setlocale( LC_CTYPE, old_locale ); free( old_locale );//还原区域设定 如果不需要还原设定,直接用setlocale即可 */

//fFileDate.Seek(0,CFile::end); CFile的写法
fFileDate.SeekToEnd(); //移到末尾,下次即变成追加
fFileDate.WriteString(str);
fFileDate.Close();

读文件也一样很简单:

// 打开文件 
CStdioFile file; 
BOOL ret = file.Open(cstrFileFullPath, CFile::modeRead | CFile::shareDenyNone); 
if (!ret) 
{ 
    AfxMessageBox("打开文件失败"); 
    return; 
} 
file.SeekToBegin(); 
// 循环读取文件 
CString cstrLine; 
while (file.ReadString(cstrLine)) 
{ 
    AfxMessageBox(cstrLine); 
} 
// 关闭文件 
file.Close();

转载于:https://my.oschina.net/HappyTeemo/blog/1558457

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值