代码行数统计(指定目录下所有文件的Line)
- 遍历文件夹计算文件行数(Windows)
主要使用的是 FindFirstFile、 FindNextFile函数寻找子目录下的文件,使用 WIN32_FIND_DATA(文件属性) 结构体
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h> char localpath[250] = {0};
int AllCodeLine = 0;
int fileNum = 0; void WriteErrToOutputFlie(char *inputpath , char *ErrMessage)
{
FILE *fd;
char buffer[250] = {0}; sprintf(buffer, "%s\\output.txt", inputpath); fd = fopen(buffer, "w");
fputs(ErrMessage, fd);
} int CreteOutputFlie(char *inputpath)
{
FILE *fd;
char buffer[250] = {0}; sprintf(buffer, "%s\\output.txt", inputpath); fd = fopen(buffer, "w+");
if(NULL == fd)
{
return -1;
} fclose(fd);
return 0;
} int File_Check_operation(char *inputpath, char *outputpath, FILE* writefd)
{
HANDLE hFile;
FILE *readfd;
int flieline = 0;
char ErrMess[250] = {0};
char buffer[250] = {0};
char szSubPath[250] = {0};
WIN32_FIND_DATA pNextInfo; sprintf(buffer, "%s\\*", inputpath); if( (NULL == inputpath) || (NULL == outputpath))
{
return -1;
} hFile = FindFirstFile(buffer,&pNextInfo);
if(!hFile)
{
return -2;
} while(FindNextFile(hFile,&pNextInfo)) //loop local path,find subpath
{
if(strcmp(pNextInfo.cFileName, "..") == 0 || strcmp(pNextInfo.cFileName, ".") == 0 || strcmp(pNextInfo.cFileName, "output.txt") == 0) // filter . and ..
{
continue;
} if(pNextInfo.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) //Check file is a directory
{
sprintf(szSubPath, "%s\\%s", inputpath, pNextInfo.cFileName);
File_Check_operation(szSubPath, outputpath, writefd);
}
else
{
//except image flie
if( strcmp( &(pNextInfo.cFileName[strlen(pNextInfo.cFileName) - 3]), "png") == 0 ||
strcmp( &(pNextInfo.cFileName[strlen(pNextInfo.cFileName) - 3]), "gif") == 0 ||
strcmp( &(pNextInfo.cFileName[strlen(pNextInfo.cFileName) - 3]), "swf") == 0 )
{
continue;
} fileNum++; //file num plus memset(buffer, 0, sizeof(buffer));
sprintf(buffer, "%s\\%s", inputpath, pNextInfo.cFileName); readfd = fopen(buffer, "r");
if( readfd == NULL )
{
sprintf(ErrMess, "%s", "can not fopen file %s\\%s", inputpath, pNextInfo.cFileName);
printf(ErrMess);
WriteErrToOutputFlie(localpath, ErrMess);
} while(!feof(readfd))
{
if(fgetc(readfd) == '\n')
flieline++;
}
flieline++; //Last line fclose(readfd); fprintf(writefd, "\t%s", pNextInfo.cFileName);
fprintf(writefd, ":%d\n", flieline);
AllCodeLine += flieline;
}
flieline = 0; }
} int main(int argc, char *argv[])
{
int ret = 0;
char ErrMess[250] = {0};
char buffer[250] = {0};
FILE *writefd; memset(localpath, 0, sizeof(localpath));
if(argc != 2)
{
exit(1);
} strncpy_s(localpath, sizeof(localpath), argv[1], strlen(argv[1])); ret = CreteOutputFlie(localpath);
if(ret != 0)
{
sprintf(ErrMess, "%s", "main call CreteOutputFlie failed!");
printf(ErrMess);
WriteErrToOutputFlie(localpath, ErrMess);
} memset(buffer, 0, sizeof(buffer));
sprintf(buffer, "%s\\%s", localpath, "output.txt"); writefd = fopen(buffer, "w"); ret = File_Check_operation(localpath, localpath, writefd);
if(ret != 0)
{
sprintf(ErrMess, "%s", "main call File_Check_operation failed!");
printf(ErrMess);
WriteErrToOutputFlie(localpath, ErrMess);
} fprintf(writefd, "\n\n AllCodeLine is : %d", AllCodeLine); fclose(writefd); return 0;
}
代码行数统计(指定目录下所有文件的Line)的更多相关文章
- java代码行数统计工具类
package com.syl.demo.test; import java.io.*; /** * java代码行数统计工具类 * Created by 孙义朗 on 2017/11/17 0017 ...
- python实现指定目录下批量文件的单词计数:并发版本
在 文章 <python实现指定目录下批量文件的单词计数:串行版本>中, 总体思路是: A. 一次性获取指定目录下的所有符合条件的文件 -> B. 一次性获取所有文件的所有文件行 - ...
- socket实现两台FTP服务器指定目录下的文件转移(不依赖第三方jar包)
通过socket实现两台FTP服务器指定目录下的文件转移,其中包含了基础了ftp文件列表显示.上传和下载.这里仅供学习用,需掌握的点有socket.ftp命令.文件流读取转换等 完整代码如下: Ftp ...
- linux --> 删除指定目录下所有文件
删除指定目录下所有文件 代码样例: ///////////////////////////////////////////////////// //Name: DeleteFile //Purpose ...
- PHP 获取指定目录下所有文件(包含子目录)
PHP 获取指定目录下所有文件(包含子目录) //glob — 寻找与模式匹配的文件路径 $filter_dir = array('CVS', 'templates_c', 'log', 'img', ...
- iOS案例:读取指定目录下的文件列表
// // main.m // 读取指定目录下的文件列表 // // Created by Apple on 15/11/24. // Copyright © 2015年 Apple. All rig ...
- PHP 批量获取指定目录下的文件列表(递归,穿透所有子目录)
//调用 $dir = '/Users/xxx/www'; $exceptFolders = array('view','test'); $exceptFiles = array('BaseContr ...
- 文件名命工具类(将指定目录下的文件的type类型的文件,进行重命名,命名后的文件将去掉type)
import java.io.File; /** * <b>function:</b> 文件命名工具类 * @author hoojo * @createDate 2012-5 ...
- C# 获取指定目录下所有文件信息
/// <summary> /// 返回指定目录下所有文件信息 /// </summary> /// <param name="strDirectory&quo ...
- [转]C# 获取指定目录下所有文件信息、移动目录、拷贝目录
原文:http://blog.csdn.net/vchao13/article/details/6200255 1.获取指定目录下所有文件信息 /// <summary> /// 返回指定 ...
随机推荐
- wandb: Network error (ConnectionError), entering retry loop.
超算使用wandb总是连接超时,设置为offline模式即可 import os import wandb os.environ["WANDB_API_KEY"] = 'KEY' ...
- [版本控制-Git]-git学习总结
1.如何将本地的文件添加到已经建好的远程分支上: 1.1 本地文件夹内,右键-git bash - 创建新仓 git init 1.2 git remote add origin 远程仓库的githu ...
- 解读gitee上的vue3开源项目,并记录不熟悉的API
1.vue中的getCurrentInstance: 在Vue3中,getCurrentInstance()可以用来获取当前组件实例: 2.vue中使用mitt实现兄弟组件传值: 在vue3中$on, ...
- 右键无法新建word文件怎么办?
电脑用久了,总会出现奇奇怪怪的问题. 我最近遇到一个问题:鼠标右键无法新建word文件.如何解决此问题呢? 刚开始,我忍了.解决方法为:把word图标固定到任务栏,就好了呗,需要用的时候, ...
- element-ui upload自定义formdata上传文件和参数
<el-upload list-type="text" action="" :http-request="HandleHttpRequest ...
- element-UI 如果获取表格当前行
表格获取当前行的方法,参考element-UI文档上,可以使用作用域插槽获取当前行的数据 // 通过 slot-scope 可以获取到 row, column, $index 和 store(tabl ...
- Windows11使用WSL Ubuntu搭建paddle的GPU环境
Windows11使用WSL Ubuntu搭建paddle的GPU环境 最近升级到了Windows11,突然有个大胆的想法:在Windows11上安装WSL,将所有开发环境安装到WSL中.这样就能在w ...
- Launchpad是什么?Launchpad使用教程
Launchpad是什么?Launchpad 是用来查找和打开Mac系统下的 app 的最快捷方式,通过 Launchpad,您可以查看.整理并轻松打开Mac里面几乎所有的应用软件.下面带来Mac ...
- TypeScript - 属性的修饰符
class Person { /** * TS 可以再属性前增加属性的修饰符 * public 修饰的属性可以再任意位置访问(修改)默认值 * private 私有属性,私有属性只能在类内部进行访问和 ...
- CentOS 7.4使用yum源安装MySQL 5.7.20
CentOS 7.4使用yum源安装MySQL 5.7.20 小牛教程 InnoDB存储引擎 2022年11月25日 从CentOS 7.0发布以来,yum源中开始使用Mariadb来代替MySQL的 ...