CodeCounter

2023-11-03

package cn.zzsxt.io2;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

/**
*统计某个文件夹下(包含子文件和文件)的所有代码的行数
* 实现思路:
* 1.获取该文件夹和子文件下的所有文件(递归)
* 2.使用BufferedReader中的readLine()读取行数据
* 技能点:
* File类的常用方法: listFiles(),isDirectory(),exist()
* 递归调用
* FileReader
* BufferedReader: readLine()
*/
public class CodeCounter {
static long count=0;
/**
* 统计指定文件下的代码行数
* @param file
* @throws IOException
*/
public static void calcCode(File file) throws IOException{
//判断文件目录是否存在
if(file.exists()){
//获取该目录下所有的子文件或子目录
File[] fs = file.listFiles();
for (File f : fs) {
//判断是否为目录
if(f.isDirectory()){
calcCode(f);//递归调用
}else{
String fileName = f.getName();
//判断文件是否为java源文件(java源文件的后缀名为.java)
if(fileName.endsWith(".java")){
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
while(br.readLine()!=null){
count++;
}
br.close();
fr.close();
}
}
}
}else{
System.out.println("你要统计的目录不存在!");
}
}

public static void main(String[] args) {
// File file = new File("D:/javacode");
File file = new File("F:/workspaces");
try {
CodeCounter.calcCode(file);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("代码总行数:"+CodeCounter.count);
}
}

转载于:https://www.cnblogs.com/wangkemeng/p/6745537.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CodeCounter 的相关文章

随机推荐

  • 全字母句(字符串) SDUT

    全字母句 Time Limit 1000 ms Memory Limit 65536 KiB Problem Description 全字母句 pangram 指包含字母表中全部 26 种英文字母 不区分大小写 的句子 其常被用于展示英文字
  • 该怎么学习区块链技术?

    1 入圈之前 出来学习的第一步是出来 在区块链的世界里面 链上的数据都是资产 所以骗子多 入圈的第一步当然是要保护好自己 建议在正式入圈前 先完整的阅读这个文档 这是安全大牛余弦出品 必属精品 看完这个文档之后 对于常见的概念以及对 Met
  • compilation error错误是什么原因_Java专题讲解——Java错误处理机制

    世界上并不存在不会出错的系统 只要是软件系统就一定会在运行的过程中出现开发人员无法预料的错误 如何处理意外发生就是我们作为一名开发人员所必须深入思考的问题 Java语言提供了完善的异常处理机制 它有效的降低了编写以及维护的门槛 这也是Jav
  • 多数据源dynamic.datasource,SpringBoot+MybatisPlus+PostgreSQL连接数据库

    所需依赖
  • 软件从一个计算机系统转换到另一个,MatrikonOPC常见问答:如何将MatrikonOPC软件许可证从一台计算机转移到另一台计算机?...

    MatrikonOPC常见问答 如何将MatrikonOPC软件许可证从一台计算机转移到另一台计算机 如题 如何将MatrikonOPC软件许可证从一台计算机转移到另一台计算机 许可程序 解决方案 解除许可程序 授权实用程序 我们的大多数软
  • python中anaconda怎么样_python中anaconda有什么用

    python中anaconda有什么用 发布时间 2020 11 16 10 05 49 来源 亿速云 阅读 61 作者 小新 了解python中anaconda有什么用 这个问题可能是我们日常学习或工作经常见到的 希望通过这个问题能让你收
  • 36小时极客嘉年华

    FISCO BCOS是完全开源的联盟区块链底层技术平台 由金融区块链合作联盟 深圳 简称金链盟 成立开源工作组通力打造 开源工作组成员包括博彦科技 华为 深证通 神州数码 四方精创 腾讯 微众银行 亦笔科技和越秀金科等金链盟成员机构 代码仓
  • python之__init__()、__call__()、__str__()、__del()__和__all__,以及pytorch的nn.Module的forward函数在实例化的时候不需要被调用。

    python基础语言之 init call str del 和 all 的用法及讲解 以及为什么pytorch的nn Module的forward函数在实例化的时候不需要被调用 下面的所有内容都来自于这些链接 1 python基础语言之 i
  • 网校搭建7:上架第一门课

    主页设置完了 网校没课程怎么行呢 现在就来添加第一门课 Step1 添加分类 在MeEdu的框架下 每一个课程都是属于一个分类 比如我有六门数学课 分别对应一年级到六年级 但是都属于是数学 那么分类就是数学 路径 视频 分类 添加保存即可
  • 剑指Offer第四十五题:扑克牌顺子

    题目描述 LL今天心情特别好 因为他去买了一副扑克牌 发现里面居然有2个大王 2个小王 一副牌原本是54张 他随机从中抽出了5张牌 想测测自己的手气 看看能不能抽到顺子 如果抽到的话 他决定去买体育彩票 嘿嘿 红心A 黑桃3 小王 大王 方
  • Docker 部署 Seata Server(使用nacos 做为注册中心和配置中心)

    组件版本关系 版本说明 每个 Spring Cloud Alibaba 版本及其自身所适配的各组件对应版本 经过验证 自行搭配各组件版本不保证可用 如下表所示 最新版本用 标记 docker 拉取 seata镜像 seata github地
  • Where is the xm Command in XenServer

    For those of you have used vanilla Xen will know about the xm command and what it does While I ve found in a few places
  • 小黑升级记----记ThinkPad470p加装固态盘

    目录 一 缘起 二 拆机 三 配件选择 四 安装 五 系统迁移 六 总结 一 缘起 本着做开发来用的目的 两年前买了ThinkPad T系列的470P 之所以选择ThinkPad 是因为之前R系列的本 用了接近10年 除了USB插口老化 里
  • vue中多个表单同时校验

    vue中多个表单同时校验 开发过程中 有时候会遇到需要对多个表单进行校验 需要利用Promise的特性进行解决 使用Promise进行一个队列校验 表单校验 submitForm refName string return new Prom
  • Vcenter 6.7添加主机报错解决方法

    出现故障环境为 Vcenter 6 7 40000 Esxi 6 7 update3 14320388 在添加新ESXI主机时进度条在80 报错 出现了常规系统错误 Unable to push CA certificates and CR
  • GD32替代STM32全过程记录

    文章目录 看完就懂 GD32替代STM32全过程记录 一 前言 二 GD32与STM32 什么是GD32 GD32F10x F30x和STM32F10x资源对比 GD32F10x F30x与STM32F10x软硬件设计对比 三 程序下载方法
  • CC2642 数据长度扩展(LE Data Length Extension)

    概要 数据长度扩展 LE Data Length Extension 功能允许LE控制器在连接状态下发送具有高达251字节的PDU 在连接期间的任何时刻 主从设备可以协商该PDU大小 这个和MTU不同 MTU是应用层的数据传输长度 这个是链
  • 安装centos与动态磁盘

    在动态磁盘压缩磁盘后 Linux是检测不到压缩后的磁盘空闲空间 需要用分区助手将动态磁盘变为基本磁盘
  • 【MES】工业4.0之MES系统方案

    人类自从250年前发生在英国的第一次工业革命开始 我们共经历了工业1 0 机械化 工业2 0 电气化自动化 工业3 0 信息化 之后迎来了工业4 0网络化 从工业革命的定义来看 仅仅是生产力的提升 那还只是量变 不能称为工业革命 必须有生产
  • CodeCounter

    package cn zzsxt io2 import java io BufferedReader import java io File import java io FileReader import java io IOExcept