要求:从命令行输入一个参数(指定目录或文件),输出该目录下指定类型文件(.cs, .java)的总行数、空行数、注释行数、代码行数。
using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Collections.Generic;
namespace ConsoleApplication2
{
class Program
{
static int commentCount = 0;
static int allCount = 0;
static int blankCount = 0;
static int codeCount = 0;
static void Main(string[] args) //主函数
{ //循环,可以多次输入路径
for(;;)
{
Console.WriteLine("请输入文件路径:");
String path = Console.ReadLine();
count(path);
allCount = blankCount + commentCount + codeCount;//计算总行数
Console.WriteLine("总行数为{0}\n空白行数为{1}\n注释行数为{2}\n代码行数为{3}", allCount, blankCount, commentCount, codeCount);
}
Console.ReadKey();
}
static void count(string file)
{
try
{
//读文件
FileStream aFile = new FileStream(file, FileMode.Open);
StreamReader sr = new StreamReader(aFile);
string line = sr.ReadLine();
//开始判断
while (line != null)
{
//字符匹配,当遇到不是以//开头的语句,则为代码行
if (line.Trim() != "" && !(line.Trim().StartsWith(@"//")))
{
codeCount++;
}
//字符匹配,当遇到以//开头的语句或者以///开头则为注释行
else if (line.Trim().StartsWith(@"//") || line.Trim().StartsWith(@"///"))
{
commentCount++;
}
//空白行
else
{
blankCount++;
}
line = sr.ReadLine();
}
//关闭文件
sr.Close();
}
//其他情况
catch (IOException e)
{
Console.WriteLine("找不到文件!");
Console.WriteLine(e.ToString());
return;
}
}
}
}
运行结果截图:
其他情况,输入一个不存在的文件: