统计文件内容行数
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; }
相关文章推荐
- 统计指定目录下,指定后缀文件的个数及内容行数
- 文件读取C++文件读写操作(三)如何统计文本的行数及如何读取文件某一行内容
- shell命令统计文件内容行数和行首地址
- 递归算法-统计指定目录下java文件内容的行数
- Python 实例一 统计指定文件的行数或读取指定文件指定行数的内容
- linux下统计文件的内容的行数,字符,字节数
- Linux 文件内容统计命令, 可以统计文件行数等【WC命令】:wc [选项] 文件…
- 多线程-使用队列统计目录下的文件的内容行数
- C++文件读写操作(三)如何统计文本的行数及如何读取文件某一行内容
- C++ 读写文本文件、统计文件的行数、读取文件数据到数组
- 解析文件。文件内容可能包含英文字母、数字、汉字等,统计文件中各个数字和英文字母各自的数量,区分大小写
- 用PHP实现文件个数以及文件行数的统计(一)待续
- Linux Shell统计每秒钟内文件增加行数
- shell如何统计文本文件行数
- python写的统计PYTHON文件的(代码行数,空行数,注释行数)小程序
- Linux统计文件行数
- 小脚本,统计一个目录下满足特定条件文件的代码行数
- 用perl统计文件夹中文件个数,行数,文件大小,用作项目统计
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组 (转)
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组