WordCount基本功能
WordCount基本功能
码云地址:https://gitee.com/Joker_zou/WordCount.git
一.项目需求
WordCount的需求可以概括为:对程序设计语言源文件统计字符数、单词数、行数,统计结果以指定格式输出到默认文件中,以及其他扩展功能,并能够快速地处理多个文件。
二.上手前的构思
- 在刚看到项目的时候,我认为这个项目主要的难度应该在于文件的读写方面。读出目标文件的所有信息,然后将这些信息经过处理,产生的结果输入到另外一个文件里面。于是我先没有考虑最后要实现的功能,而是学习C#中文件的读写。由于C#中关于文件读写的操作比较简单,所以这个阶段并不是太难。
- 之后我开始关注真正实现功能的部分,字符数统计,单词数统计,行数统计,文件写入这4个功能我决定分别写一个方法,定义在一个类中,在主函数里面调用这几个方法。由于技术能力的不足,目前我也仅完成了基础功能。
三.代码实现
1.定义全局数组,用来储存将会写入文件的信息
public static string[] Information = {"","",""};//定义写入文件的3种信息
2.统计字符数的方法
//统计字符数的方法
public int CharCount(string fileName)
{
FileStream fs = new FileStream(fileName, FileMode.Open);//打开文件
string wordsNumber = Convert.ToString(fs.Length);//读出文件中的长度信息,即字符数
fs.Close();
Console.Write("字符统计成功 ");
return int.Parse(wordsNumber);//返回读出的字符数
}
3.统计单词数的方法
//统计单词数的方法
public int WordCount(string fileName)
{
FileStream fs = new FileStream(fileName, FileMode.Open);//打开文件
StreamReader sr = new StreamReader(fs, Encoding.Default);//用特定方式读取文件中信息
string s = sr.ReadToEnd();//读出所有信息
fs.Close();
sr.Close();
char[] c = { ' ', ',', ','};//定义跳过的字符类型
string[] words = s.Split(c, StringSplitOptions.RemoveEmptyEntries);//将读出的信息按跳过的字符类型,分割成字符串
Console.Write("单词统计成功 ");
return words.Length;//返回字符串的个数,即单词数
}
4.统计行数的方法
//统计行数的方法
public int RowsCount(string fileName)
{
FileStream fs = new FileStream(fileName, FileMode.Open);//打开文件
StreamReader sr = new StreamReader(fs, Encoding.Default);//用特定方式读取文件中信息
string s = sr.ReadToEnd();//读出所有信息
fs.Close();
sr.Close();
char[] c = { '\n' };//定义跳过的字符类型,换行符
string[] words = s.Split(c, StringSplitOptions.RemoveEmptyEntries);//将读出的信息按跳过的字符类型,分割成字符串
Console.Write("行数统计成功 ");
return words.Length;//返回字符串的个数,即行数
}
5.写入文件的方法
//写入文件的方法
public void WriteIn()
{
FileStream fs = new FileStream("F:\\result.txt", FileMode.Create);//定义文件操作类型,实例化
StreamWriter sw = new StreamWriter(fs);//用特定方式写入信息,实例化
for (int i=;i<;i++)
{
sw.Write(Information[i]);//写入第i种信息
sw.Write("\r\n");//换行
}
sw.Flush();
sw.Close();
fs.Close();
Console.Write("文件写入成功 ");
}
2-5的四个方法全部写入returnInformation类中,以供主函数调用
6.主函数代码
static void Main(string[] args)
{
string fileName = "test.txt";//被执行的文件
returnInformation rNumber = new returnInformation();//实例化文档操作类
Console.Write("wc.exe "); string message=Console.ReadLine();//读取写入的各种操作符(-c -w -l -o),顺序可颠倒
char[] c = { ' ' };//操作符之间由空格分开
string[] s = message.Split(c, StringSplitOptions.RemoveEmptyEntries);//将分开的命令写入数组 int[] returnNumber = { -, -, - ,-};//最终返回的文档数据
for(int i=;i<s.Length;i++)
{
//对相应的命令执行相应的操作,结果写入returnNumber
if(s[i]=="-c")
{
returnNumber[i] = rNumber.CharCount(fileName);
Console.Write("字符数是:" + returnNumber[i] + " ");
Information[i] = "字符数是:" + returnNumber[i] + " ";
}
else if(s[i]=="-w")
{
returnNumber[i] = rNumber.WordCount(fileName);
Console.Write("单词数是:" + returnNumber[i] + " ");
Information[i] = "单词数是:" + returnNumber[i] + " ";
}
else if(s[i]=="-l")
{
returnNumber[i] = rNumber.RowsCount(fileName);
Console.Write("行数是:" + returnNumber[i] + " ");
Information[i] = "行数是:" + returnNumber[i] + " ";
}
else if (s[i] == "-o")
{
rNumber.WriteIn();
}
}
Console.WriteLine("程序结束,任意键结束!");
Console.ReadLine();
}
这个程序所处理的文件只能是默认路径下的test.txt文件,输出在F盘里的result.txt文件。
程序打开后的界面:

程序执行:

测试文件和文件写入结果:


WordCount基本功能的更多相关文章
- 软件工程:java实现wordcount基本功能
github链接:https://github.com/Nancy0611/wc 一:项目相关要求 该项目能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有wc.exe 的功 ...
- WordCount 基础功能
软测第一次作业 该项目在码云上的地址: https://gitee.com/zhege/WordCount 一,概述 WordCount的基础功能需求分析大致如下:对程序设计语言源文件统计字符数.单词 ...
- 个人项目WordCount基础功能
码云地址:https://gitee.com/stedylan/WordCount 1.PSP表格: PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning 计划 10 1 ...
- WordCount扩展与优化
合作者:201631062327,201631062128码云地址:https://gitee.com/LIUJIA6/WordCount3 一:项目说明 本次项目是在上次作业WorldCount的基 ...
- MapReduce程序(一)——wordCount
写在前面:WordCount的功能是统计输入文件中每个单词出现的次数.基本解决思路就是将文本内容切分成单词,将其中相同的单词聚集在一起,统计其数量作为该单词的出现次数输出. 1.MapReduce之w ...
- Hive实现WordCount详解
一.WordCount原理 初学MapReduce编程,WordCount作为入门经典,类似于初学编程时的Hello World.WordCount的逻辑就是给定一个/多个文本,统计出文本中每次单词/ ...
- hadoop 入门实例【转】
原文链接:http://www.cnblogs.com/xia520pi/archive/2012/06/04/2534533.html 1.数据去重 "数据去重"主要是为了掌握 ...
- Hadoop MapReduce编程学习
一直在搞spark,也没时间弄hadoop,不过Hadoop基本的编程我觉得我还是要会吧,看到一篇不错的文章,不过应该应用于hadoop2.0以前,因为代码中有 conf.set("map ...
- Hadoop集群(第9期)_MapReduce初级案例
1.数据去重 "数据去重"主要是为了掌握和利用并行化思想来对数据进行有意义的筛选.统计大数据集上的数据种类个数.从网站日志中计算访问地等这些看似庞杂的任务都会涉及数据去重.下面就 ...
随机推荐
- Elegance and familiarity are orthogonal.
作者:xiaodan zhuang链接:https://www.zhihu.com/question/21446061/answer/18421931 1.Clojure能够吸引人的很重要一点是它是J ...
- Java之事务的基本应用
基本介绍 事务是数据一致性最基本的保证,也就是说一个事务中的操作要么都成功,要么都失败,不允许部分成功.我们常说的事务就是jdbc事务,当然Java中还有其他事务,并且在使用jdbc事务有很多注意点, ...
- 多对多关联模型,MANY_TOMANY
先分别创建三张表:think_user think_group think_user_group user 表里有id.name字段 group 表里有id.groupName字段 user_ ...
- SQLAlchemy(包含有Flask-Migrate知识点)
what's the SQLAlchemy SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQ ...
- 6条 Tips 为你照亮 GitHub 寻宝之路
找房子.找保姆.找装修......在Github是不行的,但是:找Demo,找构架,找工具,找资源......就上Github!Github,啥都有.今天跟大家分享几条快速在Github找到想要的资源 ...
- Clone of COCO API
Clone of COCO API - Dataset @ http://cocodataset.org/ - with changes to support Windows build and py ...
- [CSS] Frequently used method or solutions for issues
Stick button in right side in html Solution: //In the html <div class="float__button" & ...
- GoldenGate 12.3 MA架构介绍系列(5) - 静默安装
软件下载地址 http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html 下载基于MicroService ...
- 简单js 切换左侧栏目的样式
这是html代码,里面写了left.html <div id='mydiv'> <a class='qwe'>1</a> <a class='qwe'> ...
- WebBench 安装使用
介绍 WebBench是有名的网站压力测试工具,由Lionbridge公司开发,最多可以模拟3万个并发连接去测试网站的负载能力.. 安装 系统:Linux Centos 7.4 x64 版本:webb ...