A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 姚团结 高级黑马   /  2013-10-10 17:09  /  1480 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        static void Main(string[] args)
        {
            //获取文件目录
            string[] files = Directory.GetFiles("D:\\传智播客\\我的播放器-情意中国风\\我的播放器-情意中国风");
            //遍历每一个文件
            foreach (string f in files)
            {
                //选择.cs结尾的文件
                if (Regex.IsMatch(f, "\\.cs$"))
                {
                    Console.WriteLine(f);//输出文件名
                    count(f);
                }
            }

            Console.WriteLine("代码行:" + codeLine);
            Console.WriteLine("注释行:" + notesLine);
            Console.WriteLine("空白行:" + whiteLine);

            Console.ReadKey();
        }

        public static int codeLine = 0;//代码行数,初值0
        public static int notesLine = 0;//注释行数,初值0
        public static int whiteLine = 0;//空白行数,初值0

        static void count(string path)
        {
            StreamReader sr = null;
            sr = new StreamReader(path, Encoding.Default);
            Boolean bo = true;//标记
            string patt = Regex.Escape("*/");

            while (!sr.EndOfStream)
            {
                string line = sr.ReadLine();
                if (bo)
                {
                    if (line.Length==0)//网搜的正则都不匹配,改为长度检查
                    {
                        whiteLine++;
                    }
                    else if (Regex.IsMatch(line, "//"))
                    {
                        notesLine++;
                    }
                    else if (line.StartsWith("/*"))
                    {
                        notesLine++;
                        if (!line.EndsWith("*/"))
                        {
                            /*
                           
                             */
                            bo = false;
                        }
                    }
                    else
                    {
                        codeLine++;
                    }
                }
                else
                {
                    if (line.EndsWith("*/"))
                    {
                        bo = true;
                    }
                    notesLine++;
                }
            }
        }

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

4 个回复

倒序浏览
   while (!sr.EndOfStream)
            {
                string line = sr.ReadLine();
                if (bo)

这个line定义是不是放外面会好一点。。
回复 使用道具 举报
haxyek 发表于 2013-10-10 22:33
while (!sr.EndOfStream)
            {
                string line = sr.ReadLine();

是的,应该放在外面,可以节省内存空间!
第一次做,不太熟悉:)
回复 使用道具 举报
姚团结 发表于 2013-10-10 23:46
是的,应该放在外面,可以节省内存空间!
第一次做,不太熟悉

我觉得可能我错了。。你这读完一行 line就释放掉了。
回复 使用道具 举报
姚团结 来自手机 高级黑马 2013-10-11 00:39:49
报纸
haxyek 发表于 2013-10-11 00:29
我觉得可能我错了。。你这读完一行 line就释放掉了。

对这一块不熟悉,勉强知道怎么用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马