C# 代码统计工具

博主分享了使用C#开发的代码统计工具,该工具具有可视化窗口,能方便地统计指定文件夹内特定后缀名文件的代码行数。程序通过遍历目录并读取文件内容来实现统计,同时提供了过滤后缀名的功能。用户输入后缀名,选择目录后,工具将显示文件总数和代码总行数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C# 代码统计工具


这不前一段时间用java控制台输入输出写了一个代码统计工具,感觉用着很不舒服,还是可视化的窗口比较舒服。本来想快速开发一个可视化窗口就果断抛弃掉那杯茶(Java),用了易语言,但是转念一想,用这东西发到优快云不得被mai tai si?又想了想VB6.0 emmmm(手动滑稽),就直接选择了C#(没错!.net开发!我其实不怎么会C#,就一些简单的功能还是可以实现的,怎么说呢(giao),会了一种编程语言,如果本身还有天赋的话,接触别的编程语言不是很难~)废话少说,直接上代码和截图!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

using System;
using System.Drawing;
using System.Windows.Forms;
using System.IO;

namespace 代码统计工具
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        Boolean textboxHasText = false;
        int allFileCount = 0;
        int allRowCount = 0;
        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Text = "后缀名过滤 逗号分割 例如 .java,.xml";
            textBox1.ForeColor = Color.LightBlue;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Equals("后缀名过滤 逗号分割 例如 .java,.xml") || textBox1.Text.Trim().Equals(""))
            {
                MessageBox.Show("请输入后缀名!");
            }
            else
            {
                if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
                {
                    string path = folderBrowserDialog1.SelectedPath;
                    string[] nameArr = textBox1.Text.Split(',');
                    readFile(path, nameArr);
                    label1.Text = "文件总数量:" + allFileCount;
                    label2.Text = "代码总行数:" + allRowCount;
                }
            }
        }

        private void readFile(string path, string[] nameArr)
        {
            string[] fileArr = Directory.GetFiles(path);
            string[] directoriesArr = Directory.GetDirectories(path);
            string fileStr = "";
            for (int i = 0; i < fileArr.Length; i++)
            {
                for (int j = 0; j < nameArr.Length; j++)
                {
                    if (fileArr[i].Contains(nameArr[j]))
                    {
                        if (fileStr == "")
                        {
                            fileStr = fileArr[i];
                        }
                        else
                        {
                            fileStr = fileStr + "," + fileArr[i];
                        }
                    }
                }
            }
            string[] fileArrNew = fileStr.Split(',');
            string[] allArr = new string[fileArrNew.Length + directoriesArr.Length];
            fileArrNew.CopyTo(allArr, 0);
            directoriesArr.CopyTo(allArr, fileArrNew.Length);
            for (int i = 0; i < allArr.Length; i++)
            {
                if (File.Exists(allArr[i]))
                {
                    allFileCount++;
                    StreamReader text = new StreamReader(allArr[i]);
                    int nowRowCount = 0;
                    while (!text.EndOfStream)
                    {
                        if (!text.ReadLine().Trim().Equals(""))
                        {
                            nowRowCount++;
                            allRowCount++;
                        }
                    }
                    text.Close();
                    listBox1.Items.Add(allArr[i] + "           总行数:" + nowRowCount);

                }
                if (Directory.Exists(allArr[i]))
                {
                    readFile(allArr[i], nameArr);
                }
            }

        }

        private void textBox1_Enter(object sender, EventArgs e)
        {
            if (textboxHasText == false)
            {
                textBox1.Text = "";
            }

            textBox1.ForeColor = Color.Black;
        }

        private void textBox1_Leave(object sender, EventArgs e)
        {
            if (textBox1.Text == "")
            {
                textBox1.Text = "后缀名过滤 逗号分割 例如 .java,.xml";
                textBox1.ForeColor = Color.LightBlue;
                textboxHasText = false;
            }
            else
            {
                textboxHasText = true;
            }

        }
    }
}

java代码统计工具:

戳我!使劲儿戳我!没吃饭???

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值