您的位置:首页 > 其它

统计文件内容行数

2014-09-03 14:40 169 查看
#include "windows.h"
#include "iostream"
#include "fstream"
#include "string"
#include <iosfwd>
#include "time.h"

using namespace std;

long long gFileCnt = 0;
long long gFilesLine = 0;

const char* gFileExName[] = {".cpp",".h",".c"};

bool TestFileType(char* pFileExName)
{
int nCnt = sizeof(gFileExName)/sizeof(gFileExName[0]);
for (int i=0; i<nCnt; i++)
{
if (!strcmp(pFileExName,gFileExName[i]))
return true;
}
return false;
}

char* GetFlieExName(char* pFileName)
{
char* pStart = pFileName;
char* pDotPos = pFileName;
while( pStart = strstr(pStart,".") )
{
pDotPos = pStart;
pStart++;
}
return pDotPos;
}

long CountLine(char* szFileName)
{
long curFileLine = 0;
ifstream inFile(szFileName);
string s;
while (getline(inFile,s))
{
curFileLine++;
}
inFile.close();
return curFileLine;
}

void Traversal(char* szPath)
{
WIN32_FIND_DATA FindData = {0};
char szPathTmp[200] = {0};
strcpy(szPathTmp,szPath);
strcat(szPathTmp,"\\*.*");
HANDLE  hFindFile = FindFirstFile(szPathTmp,&FindData);
if (hFindFile == INVALID_HANDLE_VALUE)
{
return;
}
while(1)
{
char FileNameTmp[200] = {0};
strcpy(FileNameTmp,szPath);
strcat(FileNameTmp,"\\");
strcat(FileNameTmp,FindData.cFileName);

if ( FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
{
if (FindData.cFileName[0] == '.')
{
if(!FindNextFile(hFindFile,&FindData))
break;
continue;
}
Traversal(FileNameTmp);
}
else
{
char* pExName = GetFlieExName(FindData.cFileName);
if ( TestFileType(pExName) )
{
long nLineCnt = CountLine(FileNameTmp);
cout<<FileNameTmp<<"当前文件行数"<<nLineCnt<<endl;
gFileCnt++;
gFilesLine += nLineCnt;
}
}
if(!FindNextFile(hFindFile,&FindData))
break;
}
FindClose(hFindFile);
}

int main(int argc, char* argv[])
{
if (argc != 2)
{
cout<<"请将文件夹托至该exe程序\n按任意键结束..."<<endl;
getchar();
return 0;
}
long nStartMSec = GetTickCount();
cout<<"输入文件夹路径:"<<argv[1]<<endl;
Traversal(argv[1]);
cout<<"总文件行数:"<<gFilesLine<<endl;
cout<<"总文件数:"<<gFileCnt<<endl;
long nEndMSec = GetTickCount();
cout<<"历时:"<<nEndMSec-nStartMSec<<"ms"<<endl;
getchar();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐