CMD文件内容统计程序简单版本
WordCount命令行程序通过CMD接收参数,输出统计结果到指定文件。
项目码云地址:https://gitee.com/ggtc/WordCount.git
实现的功能有:
统计文件字符数
1 using System.IO;
2
3 namespace WordCount
4 {
5 public class ClassCharCount:InterfaceCommandable
6 {
7 public string Count(string fileName)
8 {
9 string strResult = "字符数:";
10 try
11 {
12 FileStream fs = new FileStream(fileName, FileMode.Open);
13 strResult += Convert.ToString(fs.Length);
14 fs.Close();
15 Console.WriteLine("字符数统计成功");
16 return strResult;
17 }
18 catch
19 {
20 Console.WriteLine("文件打开失败");
21 return strResult;
22 }
23 }
24 }
25 }
统计单词个数(逗号,空格分隔)
1 using System.IO;
2
3 namespace WordCount
4 {
5 class ClassWordCount:InterfaceCommandable
6 {
7 public string Count(string fileName)
8 {
9 string strResult = "单词数:";
10 try
11 {
12 FileStream fs = new FileStream(fileName, FileMode.Open);
13 StreamReader sr = new StreamReader(fs, Encoding.Default);
14 string sen = Convert.ToString(sr.ReadToEnd());
15 // Console.WriteLine(sen);//检查读文件结果
16 fs.Close();
17 sr.Close();
18 char[] separator={',',' ',','};//中英文逗号及空格
19 string[] words = sen.Split(separator, StringSplitOptions.RemoveEmptyEntries);//按指定字符分割字符串
20 strResult += Convert.ToString(words.Length);
21 Console.WriteLine("单词数统计成功");
22 return strResult;
23 }
24 catch
25 {
26 Console.WriteLine("文件打开失败");
27 return strResult;
28 }
29 }
30
31 /* public string DeleteComments(string fs)//去注释
32 {
33 string subString = "";
34 int[] comments,
35 return subString;
36 }*/
37 }
38 }
统计文件行数(换行符为准)
1 using System.IO;
2
3 namespace WordCount
4 {
5 class ClassRowsCount:InterfaceCommandable
6 {
7 public string Count(string fileName)
8 {
9 string strResult = "行数:";
10 try
11 {
12 FileStream fs = new FileStream(fileName, FileMode.Open);
13 StreamReader sr = new StreamReader(fs, Encoding.Default);
14 string sen = Convert.ToString(sr.ReadToEnd());
15 // Console.WriteLine(sen);//检查读文件结果
16 fs.Close();
17 sr.Close();
18
19 char[] separator = { '\n'};
20 string[] Rows = sen.Split(separator, StringSplitOptions.RemoveEmptyEntries);//按指定字符分割字符串
21 strResult += Convert.ToString(Rows.Length);
22 Console.WriteLine("行数统计成功");
23 return strResult;
24 }
25 catch
26 {
27 Console.WriteLine("打开文件失败");
28 return strResult;
29 }
30 }
31 }
32 }
以上三个类实现这个接口
1 interface InterfaceCommandable
2 {
3 string Count(string fileName);
4 }
更改默认输出文件
1 public static void ChangePrint(string fileName)
2 {
3 try
4 {
5 StreamWriter sw = new StreamWriter("resultposition.txt");
6 sw.Write(fileName);
7 sw.Close();
8 Console.WriteLine("输出地址更改成功");
9 }
10 catch
11 {
12 Console.WriteLine("输出地址更改失败");
13 }
14
15 }
1 //用于在模块间传递数据
2 string strResult = "";
3 //将输入传给处理模块
4 strResult = ClassCountDeal.CountDeal(args);
5 //根据输出地址调用输出模块将统计结果输出到指定文件
6 StreamReader sr = new StreamReader("resultposition.txt");
7 string position=sr.ReadToEnd();
8 sr.Close();
9 if(position=="")
10 {
11 OutClass.Print(strResult);
12 }
13 else
14 {
15
16 OutClass.Print(strResult, position);
17 }
输出模块
仅仅接收统计结果输出到指定文件
1 using System.IO;
2
3 namespace WordCount
4 {
5 public static class OutClass
6 {
7 public static void Print(string strResult)
8 {
9 try
10 {
11 StreamWriter sw = new StreamWriter("result.txt");
12 sw.WriteLine(strResult);//将结果写入默认文件
13 Console.WriteLine("数据写入成功");
14 sw.Close();
15 }
16 catch
17 {
18 Console.WriteLine("数据写入失败");
19 }
20 }
21
22 public static void Print(string strResult,string args)
23 {
24 try
25 {
26 StreamWriter sw = new StreamWriter(args);
27 sw.WriteLine(strResult);//将结果写入指定文件
28 Console.WriteLine("数据写入成功");
29 sw.Close();
30 }
31 catch
32 {
33 Console.WriteLine("数据写入失败");
34 }
35 }
36 }
37 }
根据输入参数调用统计模块
一共有四个命令-c,统计字符数;-w,统计单词数;-l,统计行数;-o,更换输出文件。后面加要统计的文件名。
1 public static class ClassCountDeal
2 {
3 public static string CountDeal(string[] args)
4 {
5 string strResult = "";
6 //根据用户参数个数调用统计模块
7 int i=0;
8 while(i<args.Length-1)
9 {
10 switch (args[i])
11 {
12 //统计字符数
13 case "-c":
14 InterfaceCommandable ccmd = new ClassCharCount();
15 strResult += ccmd.Count(args[args.Length-1]) + '\n';
16 break;
17 //统计单词数
18 case "-w":
19 InterfaceCommandable wcmd = new ClassWordCount();
20 strResult += wcmd.Count(args[args.Length - 1]) + '\n';
21 break;
22 //统计行数,换行符为准
23 case "-l":
24 InterfaceCommandable lcmd = new ClassRowsCount();
25 strResult += lcmd.Count(args[args.Length - 1]) + '\n';
26 break;
27 case "-o":
28 //更改输出到用户指定的文件
29 OutClass.ChangePrint(args[args.Length - 1]);
30 break;
31 default:
32 Console.WriteLine("命令错误");
33 break;
34 }
35 i++;
36 }
37 //返回统计结果
38 return strResult;
39 }
40 }
我通过 strResult 这个变量在各个模块间传输统计数据。
附上运行截图在此:
//跳转到程序所在目录
//输入命令和要统计的文件名
结果如下:

测试一下更改输出地址

嗯?看看存放数据文件的名字的记录文件已经改了啊?

删除掉地址文件里的数据

再试一下写入:

但是

看来运行没错,我的提示语句有了点小小的Bug~
修改判断如下

CMD文件内容统计程序简单版本的更多相关文章
- 文件内容统计:对任意给定的.txt文件进行内容的字符数、行数、单词数进行统计
项目源码地址:https://gitee.com/xjtsh/projects 功能实现: wc.exe -c file.c //返回文件 file.c 的字符数 wc.exe -w file ...
- cmd文件内容添加到文件内容命令
今天需要因为有点SQL文件需要添加修改,但是感觉是做运维工作得当然不能一个一个来了.搞了半天bat才找到这个命令(真是一个不合格的运维) 例如:a.txt 内容添加到 b.txt (不是覆盖,而是在 ...
- 文件内容统计——Linux wc命令
有了该命令,就可以得到当前目录下所有符合条件的文件总数,如下: find -type f | wc -l 这个命令的功能也很好记,因为它功能很有限: wc -c filename:显示一个文件的字节数 ...
- DSP6455的cmd文件
DSP6455的cmd文件 CMD 的专业名称叫链接器配置文件,存放链接器的配置信息,DSP编译器的编译结果是未定位的,DSP也没有操作系统来定位执行代码,DSP系统的配置需求也不尽相同,因此需要定义 ...
- [译]在Linux中清空或删除大文件内容的5种方法
原文来源: https://www.tecmint.com/empty-delete-file-content-linux/ 有时,在处理Linux终端中的文件时,您可能希望清除文件的内容,而无需使用 ...
- 用C#Winform写个简单的批量清空文件内容和删除文件的小工具
用C#Winform写个简单的批量清空文件内容和删除文件的小工具 本文介绍这个简单得不能再简单的小项目.做这个项目,有以下目的. 1 当然是做个能用的工具 2 学习使用Github 关于用VS2013 ...
- MFC Wizard创建的空应用程序中各个文件内容的解析
创建的MFC应用程序名为:wd,那么: 一.wd.h解析 // wd.h : main header file for the WD application // #if !defined(AFX_W ...
- Golang: 读取文件并统计内容
上次我们从命令行接收用户输入,并统计了每次输入内容出现的次数,今天对程序加以改造,使其能够读取文件内容,并统计每行文本出现的次数. 首先,我们把接收输入的逻辑封装成一个函数: // scan.go p ...
- Java基础-输入输出-2.编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt
2.编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt ...
- Sed 静默替换文件内容 以及 awk 的简单使用
1. Sed的help 鸟哥说的 学东西 先看 help 先看man 再google 不好FQ再百度.. Usage: sed [OPTION]... {script-only-if-no-other ...
随机推荐
- 基于ArkUI框架开发——图片模糊处理的实现
原文:https://mp.weixin.qq.com/s/vwXVj5vmAxDRG_jTk_8hPA,点击链接查看更多技术内容. 现在市面上有很多APP,都或多或少对图片有模糊上的设计,所以,图 ...
- SSM框架整合——书籍管理系统
1.准备工作: 1.1.环境要求 IDEA MySQL 5.7.19 Tomcat 9 Maven 3.6 1.2.数据库设计 创建一个存放书籍数据的数据库表: CREATE DATABASE `ss ...
- openGauss Sqlines 使用指导
openGauss Sqlines 使用指导 Sqlines 简介 Sqlines 是一款开源软件,支持多种数据库之间的 SQL 语句语法的的转换,openGauss 将此工具修改适配,新增了 ope ...
- Spring Cloud Bus:消息总线
Spring Cloud Bus:消息总线 SpringCloud学习教程 SpringCloud Spring Cloud Bus 使用轻量级的消息代理来连接微服务架构中的各个服务,可以将其用于广播 ...
- UE4中HTC Vive 手柄如何抓取物体
想知道 HTC Vive 手柄如何抓取物体? HTC Vive 的手柄有许多功能,在游戏里你可以用手柄射箭,可以用手柄拾取木棍等等,但是这些是如何设置的呢?来看看我们的公开课教程吧. 本期教程为上半部 ...
- mysql 必知必会整理—表[十一]
前言 简单整理一下表和视图. 正文 MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 一般有两种创建表的方法: 使用具有交互式创建和管理表的工具 表也可以 ...
- react native 使用typescript
前言 TypeScript作为JavaScript的一个富类型扩展语言,深受代码风格严谨的前端开发者欢迎.但在react-native下,因为packager的配置困难,使用TypeScript一直是 ...
- CDN应用进阶 | 正确使用CDN 让你更好规避安全风险
为了帮助用户更好地了解和使用CDN产品,CDN应用实践进阶系统课程开课了.12月17日,阿里云CDN产品专家彭飞在线分享了<正确使用CDN,让你更好规避安全风险>议题,内容主要包括以下几个 ...
- 斩获大奖|阿里云PolarDB-X引领云原生分布式数据库新时代
简介:阿里云原生分布式数据库PolarDB-X荣获"2021年度最佳分布式数据库". 12月15-16日,以"引领分布式云变革 助力湾区数字经济"为主题的全球分 ...
- Forrester云原生开发者洞察白皮书,低代码概念缔造者又提出新的开发范式
简介: 云原生时代的到来为开发者群体带来了前所未有的机遇,让开发者可以更加专注业务价值创造与创新,并使得人人成为开发者成为现实.广大开发者如何转型成为云原生开发者?运维等专业人员在云原生时代如何避免边 ...