博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习C#的第一个程序:笔记查找与记录
阅读量:4303 次
发布时间:2019-05-27

本文共 2765 字,大约阅读时间需要 9 分钟。

昨天学习了C#的语法,觉得这个语言相比c、c++较为简单,和JAVA有相似之处,在VS上写代码体验很不错。

C#有很多Windows的API可供调用,其中比如查找目录及文件,操作很方便。由此想到一个小程序的点子:

因为平时会记录一些简短的笔记,比如SQL语句、HTML语句、LINUX的SHELL语句,有时候要用想要去查,翻书或者翻笔记什么的都太慢而且分心,想到可以把记录放到一个文件里,然后使用cmd调用程序搜索文件内容,找到对应行直接输出。

比如:

使用mmm程序,对文件名含有sql的文件夹搜索“查询”字符串

建立一个类,包含要查询的路径,输入参数的内容。

主要使用的类型有:DirectoryInfo,可以获取目录信息,得到目录下的文件夹名和文件名。FileInfo,可以获取文件信息。

查询函数使用如下递归子函数进行:

public void search(string[]str)        {            DirectoryInfo dir = new DirectoryInfo(find_path);            name = str[0];            content = new string[str.Length-1];            for (int i = 1; i < str.Length; i++)            {                content[i - 1] = str[i];            }            recur(dir);        }
void recur(DirectoryInfo dir)        {            FileInfo[] files = dir.GetFiles();            DirectoryInfo[] dr = dir.GetDirectories();            foreach (DirectoryInfo d in dr)            {                recur(d);            }            foreach (FileInfo f in files)            {                string fname = f.Name;                if (fname.Contains(name))                {                    string str;                    //addcontent(dir.FullName + @"\" + fname);                    StreamReader fread = new StreamReader(dir.FullName+@"\"+fname,Encoding.UTF8);                    while((str = fread.ReadLine())!= null)                    {                        foreach (string s in content)                        {                            if (count == 100) return;                            if (str.Contains(s))                            {                                ans[count++] = str;                                break;                            }                        }                    }                    fread.Close();                }            }        }
在建立的Searcher类中,使用这个函数进行查找,然后调用显示结果的子函数,通过判断count,决定输出。

主函数如下:

static void Main(string[] args)        {            Searcher sche = new Searcher();            if (args.Length > 0)            {                sche.search(args);                sche.showans();            }            else            {                return;            }        }
目前Searcher有一个功能,就是查找内容。现在如果改变需求,要做添加内容的功能,生成另外一个程序,那么要对它进行大改吗?不需要。

C#对于改变需求的情况做了很多特性支持,比如接下来使用的这种Conditional特性。

[Conditional("write_to_file")]        public void addcontent(string path)        {            StreamWriter wt = new StreamWriter(path,true);            foreach (string str in content)            {                wt.WriteLine(str);            }            wt.Close();            Console.WriteLine("已写入.");            count++;        }
如果有宏定义write_to_file,那么addcontent函数就会被编译并且调用,否则不会被调用。加上这句说明,再在之前的递归函数里添加一句(就是之前注释掉的那一行),就可以通过定义宏来选择功能。

总结:

C#对Windows的操作很方便,抛弃对指针的直接使用(要使用需要在unsafe下),虽然只学了一点皮毛的皮毛,还没有体会在WPF中以及web开发的应用,已经能感受到其特点。

转载地址:http://ktqws.baihongyu.com/

你可能感兴趣的文章
JavaScript中String对象处理HTML标记中文本的方法
查看>>
Blog开通了.
查看>>
istio-1.1.6镜像列表
查看>>
Unity C#笔记 容器类
查看>>
beta阶段第六次scrum meeting
查看>>
印度的密教经典--古老的祝福
查看>>
学生档案
查看>>
/sys/bus/i2c/devices下的内容与i2c_board_info结构体
查看>>
Python高级正则
查看>>
【转】 linux系统的7种运行级别
查看>>
弹幕和回到顶部前端web
查看>>
activemq---点对点/发布订阅模式简单代码示例
查看>>
Win7 不能双击直接打开.txt .java 文件
查看>>
ElasticSearchwindow下搭建
查看>>
nginx之正向代理
查看>>
kubernetes之coredns玩法
查看>>
Shell常用命令
查看>>
Express使用html模板
查看>>
ie6兼容问题2——3像素间距
查看>>
简洁的JS实现Tab切换效果
查看>>