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.数据去重 "数据去重"主要是为了掌握和利用并行化思想来对数据进行有意义的筛选.统计大数据集上的数据种类个数.从网站日志中计算访问地等这些看似庞杂的任务都会涉及数据去重.下面就 ...
随机推荐
- [Day11]接口、多态
1.接口 (1)接口定义:interface关键字 ,所在文件仍然是.java文件,编译后仍产生.class文件. 定义格式 public interface 接口名{ 抽象方法1: 抽象 ...
- Spring Boot 入门day01
一.Spring Boot入门 1.Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特 ...
- linux sftp远程上传文件
1.打开xshell 点击“新建文件传输”,如下图: 中间可能会出现下面的提示框,直接关掉即可: 2.切换到远程你要传输文件的目的地 命令:cd 你的路径 3.切换到本地文件所在目录 命令:lcd ...
- Python3学习之路~5.10 PyYAML模块
Python也可以很容易的处理ymal文档格式,只不过需要安装一个模块,参考文档:http://pyyaml.org/wiki/PyYAMLDocumentation
- centos7.5图形界面与命令行界面转换
查看当前状态下的显示模式: # systemctl get-default 转换为图形界面: # systemctl set-default graphical.target 转换为命令行界面: # ...
- JavaScript 常用数组函数方法专题
1. 由字符串生成数组 split() 分割字符串,并将分割的部分作为一个元素保存在一个新建的数组中. var str1 = "this is an emample to using the ...
- windows将文件夹映射为虚拟磁盘
subst X: e:123 将e盘下的123文件夹映射为x盘,123的容量即x盘容量 subst X: /t 删除映射的x盘
- react和vue,angular的比较
就这几天我所了解到react情况和大家探讨一下子react的知识: react由facebook团队维护的一套框架,已经应用在instagram网站上了,react以其独特的性能优化方案,正在被越来越 ...
- Python- 解决PIP下载安装速度慢
让PIP源使用国内镜像,提升下载速度和安装成功率. 国外的源下载速度太慢,而且经常出现下载后安装出错问题.把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装成功率. 国内源: 新版ub ...
- 史上最全的PHP常用函数大全,不看看你就out了(还会不断更新哦!)
纪录了PHP的一些常用函数和函数代码!不要错过了哦. PHP的一些常用函数usleep() 函数延迟代码执行若干微秒.unpack() 函数从二进制字符串对数据进行解包.uniqid() 函数基于以微 ...