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代码统计工具: