写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出.........

写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数.

这是一个常见的算法提问,网上搜索结果不是很满意。自己解决了一下:

 

package com.xforward.ccf;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.io.Reader;
import java.util.Arrays;

public class CopyOfFile_test_count {

 public static void main(String[] args) {
  try {
   int count = countWords_ccf("D:\\test.txt", "aa");
   System.out.println(count);
//   count = countWords("D:\\test.txt", "a");
//   System.out.println(count);

  } catch (Exception e) {
   e.printStackTrace();
  }

 }

 /*

  *这是网上搜索的东东,不是很理想~

  */

 public static int countWords(String file, String find) throws Exception {
  int count = 0;
  Reader in = new FileReader(file);// FileReader()返回的字节流是以平台编码的流
  int c;
  while ((c = in.read()) != -1) {
   while (c == find.charAt(0)) {

    if(find.lenth()==1){

           count++;

           c = in.read();
     }//这是我添加的,不然就是死循环  用"a"测试的时候
    for (int i = 1; i < find.length(); i++) {
     c = in.read();
     if (c != find.charAt(i))
      break;
     if (i == find.length() - 1)
      count++;
    }
   }
  }
  return count;
 }

 

 public static int countWords_ccf(String file, String find) throws Exception {
  int count = 0;

  byte[] bytes = find.getBytes();
  int find_l = bytes.length;
  byte[] bytes_f = new byte[find_l];

  RandomAccessFile in = new RandomAccessFile(file, "rw");//返回的字节流是以平台编码的流
  int bytes_f_l = 0;
  int read_mark = 0;

  while (-1 != (bytes_f_l = in.read(bytes_f))) {// 这里不用担心~读到的数据是-1
   if (bytes_f_l < find_l) {
    break;
   }
   if (Arrays.equals(bytes, bytes_f)) {
    count++;
   }
   in.seek(++read_mark);
  }

  return count;
 }
}

 

----------------------------------------测试文件内容-----------------------------------------------

D:\test.txt

 

好aaadsaaaa

 

总结:<1>在Java I/O 中,充分地考虑编码问题是很重要的一个方向,如果搞不清原理的话是很费神的;<2>之所以应用RandomAccessFile()来处理文件输入,是它能自由操作文件指针,方便读取~

【AI 编程工具】Codex配置部署指南 目录一、环境准备与基础安装1. 系统兼容性检查2. 前置依赖安装3. 安装方式选择二、API密钥配置与认证1. 获取API密钥2. 配置文件设置3. 临时配置方式三、沙盒环境配置与安全策略1. 沙盒模式选择2. 安全最佳实践四、高级功能配置1. 模型上下文协议(MCP)配置2. 模型版本切换3. 自定义网关配置五、常见问题排查1. 安装失败2. API调用失败3. 处理速度慢4. 配置文件不生效六、生产环境部署建议macOS/Linux:官方提供稳定支持,推荐使用原生环境Windows:官方标注为实验性支持 阅读详情

相关推荐

从零开始:STM32C011开发板的硬件生态与快速验证

本文全面解析STM32C011开发板的硬件生态与快速验证方法,帮助开发者从零开始掌握这款基于ARM Cortex-M0+内核的微控制器。内容涵盖硬件架构解析、开发环境搭建、基础功能验证及性能优化技巧,为嵌入式开发提供实用指导。

swift5iosmith的博客 481

Java基础面试题(附带答案)

Java后端基础面试题,希望可以帮到你们。

m0_58118573的博客 226

vuecil3+版本下,兼容ie等不支持es6的低版本浏览器

*综上,完成兼容性涉及到的配置的文件有,对应在页面中查看代码,就不单独附代码了:main.js。

yhr0322的博客 833

写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。

:写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。 分析题目:从字面信息可以分析到以下信息。 是一个方法,方法有两个参数,一个返回值。 两个参数:文件名和要查询的字符串。 返回值:是传入的字符在文件中出现的次数。 具体需要怎么实现。 我想到了两个种方法: 第一种: /** * 通过IO读文件对文件中每一行进行判断对比 * @param fileName 文件完整路径 * @param str 要对比的字符串 * @

Seanliuo 2977

HFSS实战(三)——过孔via TDR仿真

在上一讲中,主要是通过观察S参数确定via的优化是否达到目标。但S参数只能看到一个整体的结果,并不知道via真实的阻抗是多少?想要单独确定via的阻抗,最好还是通过TDR的仿真。

luohuo9844的博客 1万+

[图解]SysML与EA实战:住宅安全系统接口块设计全解析

本文详细解析了使用SysML和EA工具进行住宅安全系统接口块设计的全流程。从系统上下文图入门到接口块实战技巧,涵盖块定义图与内部块图的视角转换,以及多图协同建模方法论。特别分享EA工具的高效操作指南和常见问题避坑建议,帮助工程师掌握精确信号定义、端口方向设置等关键技能,提升安防系统设计效率。

weixin_29234509的博客 333

写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。

package CoreJava.day18_IO; import java.io.FileInputStream; import java.io.IOException; /** * Created by Intellij IDEA. * * @author zhudezhong * @date 2021/6/29 21:42 */ //写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。 public class Demo09 { public stati

阿中丶20 525

独立站如何采集商品?外贸独立站采集教程

从这里Robert了解到还有国内有很多仿牌卖家、微商,都有类似的情况,他们出海的阻碍主要在于支付、物流、推广。8.插件“抓取任务”列表手动点同步,将商品同步到主商城后台商品管理列表(商品默认同步到下架列表中) 后台商品管理下架列表显示已同步商品。5.店铺信息修改完成后,可以开始采集商品,采集时弹窗中会自动识别当前平台及商品链接,分类和相册名称可以自定义 编辑修改。4. 打开采集目标站商品页面,点开谷歌浏览器扩展程序列表,找到Shopyy采集平台,打开配置页。打开弹窗中的“店铺管理”,添加店铺信息。

Jernnifer_mao的博客 1378

面试题: 写入一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。

package testdemo; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; public class testSelectCount { /** * 写入一个方法,输入一个文件...

Sun_940903的博客 6972

Linux8.3上装Oracle 19c RAC,ssh互信总报INS-06006?别急着下补丁,试试这个临时替换scp的骚操作

本文针对在Linux 8.3上安装Oracle 19c RAC时遇到的SSH互信报错INS-06006问题,提供了一个无需官方补丁的临时解决方案。通过创建SCP包装脚本并添加-T参数,有效解决了OpenSSH 8.x版本与Oracle安装程序的兼容性问题,帮助用户顺利完成安装流程。

weixin_30764883的博客 403

华为OD机试双机位C卷-几何平均值最大子数组(Py/Java/C/C++/Js/Go)

华为OD机试(机考)2026双机位C卷 【几何平均值最大子数组】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【几何平均值最大子数组】。

qq_45776114的博客 1367

写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数

这相当于一个词频统计问题,操作的肯定是纯文本文件,那么我们肯定是首选字符文件输入流(FileReader)来读取了。 思路也很简单,假设文件中有这样一串文本内容: ``` ahello world 中国 java hel lo 中国 hello ``` 我们查找单词`hello`在其中出现的次数,按照我的逻辑,我认为hello出现了2次的,ahello也算。 利用程序如何做呢? 首先,要查找的字符串是'hello',它的长度为5,那么我们就创建一个长度为5的字符数组,每次读取5个字符,把读取出来的

发光吖的博客 2771

36、T5L 迪文屏C51开发之绘制动态曲线

T5L 迪文屏C51开发之绘制动态曲线1、介绍2、例程功能简介3、GUI界面设计3、C51程序设计 1、介绍   本文将利用DGUS Tool软件中的【动态曲线控件】来绘制曲线效果,在T5L迪文屏中总共支持8个通道的曲线,而曲线数据是需要缓冲区的,如果 8 通道曲线同时使用,0x1000-0x4FFF 将作为曲线缓冲区地址,此时该部分变量地址不能被其他控键使用,其他控键地址使用范围为0x5000-0xFFFF,当某曲线通道不被使用时,那么其所对应的缓冲区地址可以做其他用途,曲线通道具体的地址分布如下图所示:

嵌入式羊圈 3132

写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数

import java.io.BufferedReader; import java.io.FileReader; public final class MyUtil { // 工具类中的方法都是静态方式访问的因此将构造器私有不允许创建对象(绝对好习惯) private MyUtil() { throw new AssertionError()...

自由 自信 不失望 2246

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【练手】写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数

用spilt()来做更加方便 import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; //写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数 public class Test { public static void main(String[] arg

楞头小子学java 2808

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

输入一个文件名和一个字符串, 统计这个字符串在这个文件中出现的次数?

  本来对文件读取掌握的就特别不好,还记得在一次省赛的蓝桥杯比赛中有一道文件读取,还好那次文件数据不大,因为参赛用的语言是C语言,所以直接全部数据scanf了,还好全部可以读取,当时看到我们带队老师不可置信的眼神,当时我是想找个地缝钻进去的。以后还是要多补一下自己的薄弱环节。 public class FileUtils{ /** * 写入一个方法,输入一个文件名和一个...

ArvinYL 2524

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

输入一个文件和一个字符,统计该字符在文件中出现的次数

def countstr(filename,str1): filenames = filename + ".txt" f = open(filenames,'r') count = 0 for line in f: for i in line: if i == str1: count += 1...

Wut_LS的博客 8512

写一个方法,输入一个文件名和一个字符串,统计这个字 符串在这个文件中出现的次数。

import java.io.BufferedReader; import java.io.FileReader; public final class Unit { private Unit(){ } public static void main(String[] args) { countWodInFile("E:\\团建经费发放\\结算\\LLL.txt","ab"); } public static int countWodInFile

qq_39319138的博客 652

Java - 写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 代码如下: package chimomo.learning.java.code.file; import java.io.*; import java.nio.ByteBuffer; import java.nio.channels.Fil...

了解➔熟悉➔掌握➔精通 3万+

写入一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。

public class Test1 { /* * * 写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。 * */ public static void main(String[] args) { // TODO Auto-generated method stub String filePath = "D:/abc.txt" ; Sys...

DJS168888的专栏 946

输入一个文件名和一个字符串,统计这个字符串在这个文件中出 现的次数

private int countMatchesOfFile(String fileName, String searchStr) { int count = 0; String line; BufferedReader reader = null; try { reader = new BufferedRead

雨夜画梦的博客 924

批量重命名,批量统计文件名

今天处理一批图片,分散在五十几个文件夹下,每个文件夹下的数量和名字均不相同,现在要统一按规律重命名并统计归档。 要求:1,命名规则:所在文件夹名_文件名.png 2,统计出每个子文件夹下数量 3,把每个子文件夹下的文件归档记录 如下图展示,几十个文件夹,每个文件夹下数量、名字都不规则。 步骤1,获取所有文件名称 ①在主目录下,按住shift然后点击鼠标右键,选择“在此处打开命令窗口” ②输入dir /s /b >> list.xlsx 说明:/s是表示输出包括...

maxkat的博客 2397

JAVA基础 写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数

读取一行循环 行里搜索word,记录总次数 方法:每遇到一个word就++并且裁剪包括这个word的前一部分。

weixin_45322373的博客 517

从键盘输入一个字符串,统计它在某文件(由用户从键盘输入文件名)中出现的次数,并在屏幕上输出包含该字符串的那些行。

#include<iostream> #include<fstream> #include<string> using namespace std; int main(){ fstream dataFile; int x=0; char input[100]; cout<<"请输入字符串1:"; char str[100]; cin>>str; dataFile.open("d:/a.txt",ios::in); if(!data.

qq_43615815的博客 1149

python输入一个文件和一个字符、统计_写入一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。...

1 /**2 * 写入一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。3 *@paramfileName 文件名4 *@paramstr 查找的字符串5 *@return6 *@throwsException7 */8 //方法一9 public static int funCount1(String fileName,String str) ...

weixin_39819283的博客 449
上一篇: java.lang.Math.round()学习
下一篇: ORA-01403: 未找到数据问题+存储过程循环跳转
ccfangle
博客等级 码龄20年 1粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值