先列出定义的方法:

1. public int getWordNum(String fileName)

统计一个含有英文单词的文本文件的单词个数。

2. public void getWordNumFile(String formfileName, String word)

统计指定的文件中含有指定单词的个数。

假设指定单词是 “You”

在程序开发中,经常需要对文本文件中的内容进行读取,如果想从文件中直接读取字符便可以使用字符输入流FileReader。

通过此流可以从关联的文件中读取一个或一组字符。

接下来在 F 盘根目录下新建文件“‘countwords.txt’”并在其中输入以下字符串:(末尾是鼠标定位符)

字符流同样提供了带缓冲区的包装流,其中BufferedReader 用于对字符输入流进行包装,

其中有一个重要的方法readLine(),该方法用于一次性读取一行文本。

注意,例子中定义文件路径时使用里\\。这是因为在Windows中的目录符号为反斜线\,但反斜线\ 在Java中是特殊字符,表示转义符,所以在使用反斜线\ 时,前边应该再添加一个反斜线,即\\。除此之外目录符号也可以用正斜线/来表示。

public class TextProcessor {public static void main(String[] args) throws IOException {String fileName = "F:\\countwords.txt";//文件路径String formfileName = "F:\\countwords.txt";TextProcessor.getWordNum(fileName); //调用第一个方法String word = "You";  // 指定单词TextProcessor.getWordNumFile(formfileName, word); //调用第二个方法}// 统计一个含有英文单词的文本文件的单词个数public static int getWordNum(String fileName) throws IOException {File file = new File(fileName);int count = 0; // 计数if (file.exists()) {FileReader fr = new FileReader(fileName);  // 读取文件中的字符//创建一个BufferedReader缓存对象BufferedReader reader = new BufferedReader(fr);String line = null;StringBuffer sbf = new StringBuffer();while ((line = reader.readLine()) != null) { // 每次读取一行文本,判断是否到文档末尾sbf.append(line); //读取的追加到StringBuffer缓冲区里String newString = sbf.toString();  //将sbf里边的内容定义到变量newString里//在整个字符串中,先讲可能的标点符号换成空格newString = newString.replace('\'', ' ');//将 单引号 号用空格替换newString = newString.replace(',', ' ');//将 逗号 用空格替换newString = newString.replace('.', ' ');//将 句号 用空格替换//因为上面操作可能会造成一个单词后有多个空格,所以接下来要将字符串按空格(一个或多个)进行划分String[] strword = newString.split("\\s+");  // 先分割 \\s+ 代表一个或多个空格System.out.println(Arrays.toString(strword));//输出数组for (int i = 0; i < strword.length; i++) {/*Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式它的构造方法是私有的,不可以直接创建,但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式find()对字符串进行匹配*/Pattern pattern = Pattern.compile("[a-zA-Z]*");//匹配一个字母后面接着0或者多个字母(大写或者小写)Matcher matcher = pattern.matcher(strword[i]); //   将数组里遍历到的每一个字符串与正则表达式对比。if(matcher.find()){ //找到了就计数count++;}}System.out.println(fileName + " 文件中有" + count + "个英文单词");}reader.close(); // 关闭流fr.close();}return count;}// 统计指定的文件中含有指定单词的个数public static void getWordNumFile(String formfileName, String word) throws IOException {File file = new File(formfileName); // 创建文件对象int count = 0;  // 计数if (file.exists()) {FileReader fr = new FileReader(formfileName);  // 读取文件中的字符BufferedReader reader = new BufferedReader(fr);String line = null;StringBuffer sbf = new StringBuffer();while ((line = reader.readLine()) != null) { // 每次读取一行文本,判断是否到文档末尾sbf.append(line);String newString = sbf.toString();newString = newString.replace('\'', ' ');//将'号用空格替换newString = newString.replace(',', ' ');//将逗号用空格替换newString = newString.replace('.', ' ');//将句号用空格替换String[] strword = newString.split("\\s+");  // 先分割 \\s+ 代表一个或多个空格for (int i = 0; i < strword.length; i++) {  // 判断里边是否含有指定单词if (strword[i].contains(word)) {count++;}}}System.out.println( " 文件中的" + word + "单词有" + count + "个英文单词");reader.close();fr.close();}}
}

运行结果图:

[You, can, be, as, mad, as, a, mad, dog, at, the, way, things, went, you, could, swear, curse, the, fates, But, when, it, comes, to, the, end, you, have, to, let, go]
F:\countwords.txt 文件中有32个英文单词
 文件中的You单词有1个英文单词

统计一个含有英文单词的文本文件中的单词个数以及指定单词个数相关推荐

  1. 统计一个数字在排序数组中出现的次数

    package demo;import java.util.Arrays;/** 题目描述 统计一个数字在排序数组中出现的次数.*/ public class Offer_23 {public int ...

  2. 统计一个字符串中英文字母、空格、数字和其它字符的个数

    1 package demo; 2 import java.util.Scanner; 3 /** 4 * 统计一个字符串中英文字母.空格.数字和其它字符的个数 5 */ 6 public class ...

  3. 统计单词频率 java_java 统计一个(英文)文本中频率最高的10个单词

    要求: 统计一个(英文)文本中频率最高的10个单词 解决思路:1.通过java I/O操作读取文本文件 2.用BufferedReader每次读取文本的一行(即为一个String) 3.将取得的Str ...

  4. 统计一个文件英文单词的个数

    /*统计一个文件内,英文单词的个数,并按 word = count的格式顺序输出 统计输出总的英文单词个数 */#include <fstream> #include <iostre ...

  5. Java 数组 定义一个数组,获取数组中的最大值和最小值,奇数个数和偶数个数...

    /*** 定义一个数组,获取数组中的最大值和最小值 奇数个数和偶数个数* */ package com.xuyigang1234.chp01;public class Demo8 {public st ...

  6. T35:统计一个数字在排序数组中出现的次数

    思路很简单 :就是利用二分法寻找第一个K出现的地方和最后一个K出现的地方 public class GetNumberOfK1 {public int GetNumberOfK(int [] arra ...

  7. 38. 统计一个整数的二进制表示中bit为1的个数

    参考: https://www.cnblogs.com/graphics/archive/2010/06/21/1752421.html 转载于:https://www.cnblogs.com/Gri ...

  8. 位运算—统计文本文件中汉字的个数

    声明:这些内容主要是面向C语言的初学者,尤其是正在学习C语言的学生. C语言进行底层开发时经常会用到位运算,比如操作系统中的各种描述符,不同的位代表着不同的含义,经常需要按位赋值.关于位运算的细节,教 ...

  9. MapReduce初体验——统计指定文本文件中每一个单词出现的总次数

    相信小伙伴们看了小菌上一篇博客<什么是MapReduce(入门篇)>后,对MapReduce的概念有了更深的认知!本篇博客,小菌为大家带来的则是MapReduce的实战--统计指定文本文件 ...

最新文章

  1. 你分库分表的姿势对么?——详谈水平分库分表
  2. 46 岁美国华裔“鞋王”意外去世,25 岁创业成亿万富翁
  3. Python -- Scrapy 命令行工具(command line tools)
  4. spring中lazy-init详解
  5. 关于Visual Studio 2019的前期详情
  6. UITableViewCell在非Nib及Cell重用下设置CellStyle
  7. (十)Linux之等待队列
  8. Java通过反射访问成员变量
  9. Corba传值包含中文解决
  10. 【英语学习】【Level 07】U05 Best Destination L2 The City of Lights
  11. requests的response.text 与 response.content
  12. python 动态类型_动态类型(Dynamic type)
  13. 搜狗开源最新NLP研究成果,打造业内最全机器阅读理解工具包SMRC
  14. linux系统装好后优化,CentOS 5.6 Linux安装系统后的基本优化
  15. sem_timedwait的用法
  16. foxmail6.5+易邮邮件服务器搭建局域网邮件收发系统(完整版包含测试)
  17. 从APNIC获取中国IP地址列表
  18. python读取csmar_Python:爬取上市公司公告-Wind-CSMAR
  19. 利用hfs工具上传文件的操作教程
  20. (附源码)spring boot大学生综合素质测评系统 毕业设计162308

热门文章

  1. linux 给目录添加权限
  2. 《天龙八部》通关攻略 二
  3. matlab幅值解调,DSB解调后信号的幅值与信号的幅值为啥差别那么大
  4. 京瓷m1025维修模式进不去_各种复印机维修模式进入方式
  5. 什么是单页应用?它的优缺点?其缺点的解决方案是什么?
  6. Apache Karaf自定义feature
  7. SAP第一代:基于源码增强(子过程subroutine)
  8. pip install gym[box2d]报错
  9. 与、或、非、异或...区别
  10. hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活