热度 22
2010-9-11 13:03
2594 次阅读|
1 个评论
目的 在VC的ANSI编译环境下读取Unicode文件长度. 说明 在 ANSI 的环境下, 使用 file.GetLength() 读取 Unicode file, 将返回错误的数据. 我们顺手写了小函数, 用于读取 Unicode file length. 我们使用的思路基于, unicode 的每个字符一定是 2bytes. 我们返回的长度值, 包括文件头: 0xff 0xfe 或 0xfe 0xff 的长度. 并对一个文件的例子作了简单的测试. 例程 // if file isnot existed or unicode file, then return 0, or the whole filelen including head int CSetMsg::ReadUnicodeFileLen(CString sFilename) { int len = 0; CFile file; if(!file.Open(sFilename, CFile::modeRead)) { return 0; } BYTE head ; file.Read(head, 2); if((head ==0xffhead ==0xfe)||(head ==0xfehead ==0xff) ) { file.Seek(2, CFile::begin); //0xfffe len = 2; char tmp ; while(file.Read((char *)tmp,2)0) { len += 2; } } else { //AfxMessageBox("File is NOT Unicode!"); } file.Close(); return len; } Allen 2010.09.11