词频统计多需求版

下面针对词频统计的不同功能要求给出部分代码和截图,具体代码请访问博客下方提供的链接。

功能1. 小文件输入. 为表明程序能跑,结果真实而不是迫害老五,请他亲自键
盘在控制台下输入命令。

部分代码:

public static void main(String[] args) throws IOException {

FileReader file;
BufferedReader buffer;
Map<String, Integer> hashMap = new HashMap<String, Integer>();
try {
if (args.length != 0) {

// 建立文件输入流
file = new FileReader(args[0]);   //args[0]是运行时后面输入的参数
buffer = new BufferedReader(file);

编译后,运行时在后面直接加参数,运行时截图如下:

功能2. 支持命令行输入英文作品的文件名,请老五亲自录入。

部分代码:

public class CountWord02 {
public static void main(String[] args) throws IOException {

FileReader file;
BufferedReader buffer;
Map<String, Integer> hashMap = new HashMap<String, Integer>();
Scanner scan = new Scanner(System.in);
try {
String path = "F:\\document\\";
path += scan.next();  
// 建立文件输入流
file = new FileReader(path+".txt"); //通过原有的路径F:\\document\\+用户在控制台输入的文件名+后缀名".txt"组成文件的绝对路径

buffer = new BufferedReader(file);

编译后,后运行,然后等待用户输入文件名,运行时截图如下:

ps:lost是程序运行后从命令行输入的文件名。

功能3. 支持命令行输入存储有英文作品文件的目录名,批量统计。

部分代码如下:

public class CountWord03 {
public static void main(String[] args) throws IOException {

FileReader file;
BufferedReader buffer;
Map<String, Integer> hashMap = new HashMap<String, Integer>();
Scanner scan = new Scanner(System.in);
try {

String path = scan.next(); //用户输入目录的绝对路径
File f = new File(path);  //path为文件的目录名
File s[] = f.listFiles();     //列出目录下的文件

for (int i = 0; i < s.length; i++) {
// 确保文件是以.txt结尾
String fileName=s[i].getName();
if (fileName.endsWith(".txt")) {
System.out.println(fileName);
// 建立文件输入流
file = new FileReader(s[i]);

buffer = new BufferedReader(file);

编译后,然后运行,然后等待用户输入目录名,然后目录下的所有.txt文件将会依次展示。运行时截图如下:

ps:f:\document是程序运行后从命令行输入的文件的路径名。

对于功能四暂时未完成,对于重定向的命令行输入暂时还未完成,后续会尽快补上。

总结:对于这次的词频统计,我的感受是主体程序未变。只是在命令行编译,运行时输入的要求不同,与之相应的是程序中的少量修改。

词频统计代码发布地址:  https://coding.net/u/muziliquan/p/classwork02/git/tree/master/homework

时间: 2024-09-30 00:31:45

词频统计多需求版的相关文章

词频统计(WEB版)

通过点击浏览按钮输入文件: 点击查询按钮后返回结果: 前台代码: 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 2 3 <!DOCTYPE html> 4 5 <html xmlns="http://www.w3.org/1999/xhtm

词频统计单元测试--------第二版

在上一次的单元测试的基础上,我单独写了一个测试类对 单词树进行遍历的方法sortAndOutput() 进行测试,下图是这个方法的展示,他返回的是一个Map,Map里面存的是对应的单词以及其出现的次数. /* * 对文章用generateCharTree()函数生成单词树,在对生成的单词树进行排序并且输出 */ public Map sortAndOutput(String filePath) throws IOException { reader = new FileReader(filePa

词频统计1.1版——单元测试

前言:网上讲c语言单元测试的内容确实不太多,很多讲单元测试的都注重讲了单元测试的重要性.cppunit.junit的用法,但是没找到具体该如何进行单元测试的帖子,这就导致这几天知道了单元测试很重要,却不知道怎么写好这个测试,网上教程里的例子都是Assert.AreEqual,所以目前的收获很有限,试着在vs里写了几个测试,但是感觉并没有抓住单元测试的精髓,迷惑的很,希望老师多多指点.不过很神奇的一点是,我很深刻的认识到了单元测试的实用性,因为我以前写程序的时候,整体编译运行的时候如果出错了,自己

效能分析——词频统计1.1版

前言:在寻错及修改两天之后,发现之前的程序不能处理大文件的原因在于所写的排序部分,于是做了两件事: 第一是修改了所写的quick排序部分,现在可以处理大文件了: 第二是学习了http://www.blogjava.net/killme2008/archive/2010/09/08/quicksort_optimized.html 中写的关于快速排序算法的优化改进,也移植到了我的程序里试了试. 分别使用两种方法处理同一份文件,大小是1M,不同的词有17000,这个大小的文件之前是一处理就崩溃的,算

结对&amp;词频统计

结对编程 Pathner 濮成林(博客:http://www.cnblogs.com/charliePU/) 1.词频统计 环境依赖: 开发环境.myeclipse 2013, jdk1.7.0_04, echart.mini.js, tomcat 7.0. 运行环境.tomcat 7.0, jre7. 对濮成林词频统计进行需求的再讨论 确定输入:TXT格式纯英文文档大小不超过10M 分析结果排序:按顺序输出前N个 结果显示内容:显示内容在原有基础上增加排序结果显示.增加文章标题显示.修改横坐标

使用Storm进行词频统计

词频统计 1.需求:读取指定目录的数据,并且实现单词计数功能 2.实现方案: Spout用于读取指定文件夹(目录),读取文件,将文件的每一行发射到Bolt SplitBolt用于接收Spout发射过来的数据,并拆分,发射到CountBolt CountBolt接收SplitBolt发送的每一个单词,进行单词计数操作 3.拓扑设计: DataSourceSpout + SplitBolt + CountBolt 代码如下: package com.csylh; import org.apache.

C语言实现词频统计——第二版

原需求 1.读取文件,文件内包可含英文字符,及常见标点,空格级换行符. 2.统计英文单词在本文件的出现次数 3.将统计结果排序 4.显示排序结果 新需求: 1.小文件输入. 为表明程序能跑 2.支持命令行输入英文作品的文件名 3. 支持命令行输入存储有英文作品文件的目录名,批量统计 4. 从控制台读入英文单篇作品,重定向输出 代码实现: 在原代码的基础上稍做了修改,使之可以批量读取文件夹下的所有文件,所以加了一个mode来判断是单个文件输入还是文件夹输入,来不及整理程序,所以现在程序有点丑.这次

java词频统计——web版支持

需求概要: 1.把程序迁移到web平台,通过用户上传TXT的方式接收文件. 2.用户直接输入要统计的文本,服务器返回结果 3.在页面上给出链接 (如果有封皮.作者.字数.页数等信息更佳)或表格,展示经典英文小说词频统计结果: 4.支持用户自定义单词分隔符: 5.词汇范围对比(额外项). 分析和设计: 1.创建web工程,利用servlet上传文件的技术实现用户向服务器上传文件.页面设置表单类型为enctype="multipart/form-data",创建文件上传文本框<inp

词频统计效能测试---------第二版

在第一次的词频统计中,对JProfile 款软件不是很熟悉,感觉数据不是很准确,在程序启动时JProfile总是提示Java虚拟机已退出,后来经过查阅知道解决方案:截图如下   要将 keep vm alive 勾选上. 程序总体总体情况如下: 当程序运行之后,cpu和内存的使用几乎在同一时间有一个明显的上升过程. 各个对象使用情况如下 下面是热点函数的展示,这也和我在程序中运用时间戳确定建树函数[generateCharTree()]占用时间较多的情况相符.因为对这个程序来说主要时间都花费在单