本文转载连接: https://blog.csdn.net/weiwenhp/article/details/7931846
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.IO; //这个是文件读写操作用到的命名空间
using System.Text.RegularExpressions; //这个是正则表达式命名空间
namespace ConsoleApplication2
{
class Program
{
static int totalSourceCodeLines = 0; //定义个全局变量
static void Main(string[] args)
{
int result;
string csPath = @"D:\Delete\ConsoleApplication2\ConsoleApplication2";
result = GetsourceCodeLins(csPath);
Console.WriteLine("{0}", result);
Console.ReadLine();
}
private static int GetsourceCodeLins(string projectPath) //参数是源文件所在的路径
{
CalculateTotalCodeLins(projectPath); //调用另一个函数
return totalSourceCodeLines;
}
private static void CalculateTotalCodeLins(string projectPath)
{
//遍历所有目录
DirectoryInfo dir = new DirectoryInfo(projectPath);
foreach (DirectoryInfo dirInfo in dir.GetDirectories())
{
// Console.WriteLine("dirInfo: {0}", dirInfo);
CalculateTotalCodeLins(projectPath + "\\" + dirInfo.Name); //递归调用
}
// 遍历目录下的所有源文件
foreach (FileInfo fileInfo in dir.GetFiles())
{
if (Regex.IsMatch(fileInfo.Name, @".cs\z")) //针对不同的源文件可以用正则表达式筛选,这里是.cs源文件.
{
Console.WriteLine("fileInfo: {0}", fileInfo);
totalSourceCodeLines += CalculateCodeLines(projectPath + "\\" + fileInfo.Name); //调用另一个函数计算每个源文件多少行.
//Console.WriteLine("totalSourceCodeLines: {0}", totalSourceCodeLines);
}
}
}
private static int CalculateCodeLines(string soureFilePath)
{
FileStream fStream = new FileStream(soureFilePath, FileMode.Open);
StreamReader reader = new StreamReader(fStream);
int count = 0;
while (reader.ReadLine() != null)
{
count++;
}
reader.Close();
fStream.Close();
return count;
}
}
}