15,979
社区成员
发帖
与我相关
我的任务
分享
#define MAX_BUF 64*1024
void CTestDlg::AnalysisFile()
{
char buf[MAX_BUF];
ULONGLONG ullPos;
ULONGLONG ullFileLen;
int nBufPos;
int nRead;
memset(buf, 0, sizeof(buf));
ullPos = 0;
nBufPos = 0;
CFile file;
file.Open("c:\\001.txt", CFile::modeRead);
ullFileLen = file.GetLength();
while((ullPos = file.GetPosition()) < ullFileLen)
{
nRead = file.Read(buf, MAX_BUF); //读取的字节大小,一般情况下应该是MAX_BUF,文件结尾就不足MAX_BUF
while(nRead > 0)
{
nBufPos = AnalysisBuffer(buf, nRead);
if(MAX_BUF - nBufPos > 0)
{
file.Seek(nBufPos - MAX_BUF, CFile::current);//看看到底是移动多少,细节
}
}
nBufPos = 0;
}
}
int CTestDlg::AnalysisBuffer(char*buffer, UINT nReadSize)
{
int nSubCount = 0;
CString rString;
CString rSubString;//用来接受子字符串,就是读取的一行
rString = buffer;
while(AfxExtractSubString(rSubString,rString.GetBuffer(0), nSubCount++,'\r\n'))
{
//....
//rSubString就是循环读出每一行的;
}
return rString.ReverseFind('\r\n');
}