java对于目录下文件的单词查找操作代码实现

 更新时间:2019年11月05日 09:41:28   作者:悄悄成长  
这篇文章主要介绍了java对于目录下文件的单词查找操作代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了java对于目录下文件的单词查找操作代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

写入文件的目录。代码通过找目录下的文件,进行相关函数的操作。如果目录下面包含子目录。代码设有调用递归的方法,在寻找子目录下的文件

在进行相关的函数操作。函数主要是按用户输入的个数要求输出文件中出现次数最多的前几位字母。

package com.keshangone;

//将想要输出的数据写入新的文件里面
import java.util.*;
import java.io.*;
import java.util.Scanner;
public class zongword
{
  static public void gongneng(String file1) throws IOException
  {
    System.out.println("想要输出前几个的单词");
    Scanner sc1=new Scanner(System.in);
    int www=sc1.nextInt();
    int ww=0;
    int ha=0;
    Map<String,Integer> map=new HashMap<>();//通过map保存映射,和数组类似
    File file=new File(file1);
    FileReader fr=new FileReader(file);
    try
    {
      BufferedReader bd=new BufferedReader(fr);
      String wen=null;
      while((wen=bd.readLine())!=null)//读入一行数据
      {
        String []word=wen.split(" ");//通过空格将整行数据分成多个字符串并保存在字符串数组里
        ha+=word.length;
        for(int i=0;i<word.length;i++)
        {
          if(word[i].equals(" "))
          {
            continue;
          }
          if(map.containsKey(word[i].toLowerCase()))//检查集合中是否有这个元素
          {
             Integer a=map.get(word[i].toLowerCase());
             a++;
             map.put(word[i].toLowerCase(), a);//为他出现的次数加一
          }
          else
            map.put(word[i].toLowerCase(),1);//如果从未出现过就将他的values赋值为一
        }
        map.put("  ",0);
      }
      fr.close();
    }catch (Exception e)//程序的异常处理
    {
      e.printStackTrace();
    }
    File file2=new File("D:\\新建文件夹 (6)\\wen1.txt");
    if(!file2.exists())
    {
      try
      {
        file2.createNewFile();
        System.out.println("数据输出的指向文件不存在已经为您新建一个以保留运行结果请继续操作");
      }
      catch(Exception e)
      {
        e.printStackTrace();
      }
    }
    FileWriter fw=new FileWriter(file2);
    BufferedWriter bw=new BufferedWriter(fw);
    Integer max1;
    String max2="";
    for(int b=1;b<=ha;b++)
    {
      max1=0;
      max2=null;
      //找出出现次数最多的单词
      Set<String> set=map.keySet();//构建map集合所有key对象集合
      Iterator <String> it=set.iterator();//创建集合迭代器
      while(it.hasNext())
      {
        String key1=it.next();
        Integer a2=map.get(key1);
        if(a2>max1)
        {
          max1=a2;
          max2=key1;
        }
      }
      //主要是为了判断是否会出现出现次数相同的单词
      Set<String> set2=map.keySet();//构建map集合所有key对象集合
      Iterator <String> it2=set2.iterator();//创建集合迭代器
      while(it2.hasNext())
      {
        String key2=it2.next();
        Integer a3=map.get(key2);
        if(a3==max1)
        {
          Set<String> set3=map.keySet();//构建map集合所有key对象集合
          Iterator <String> it3=set2.iterator();//创建集合迭代器
          while(it3.hasNext())
          {
            String key4=it3.next();
            Integer a4=map.get(key4);
            if(a4==a3)
            {
              if(key2.compareTo(key4)<0)
              {
                key2=key4;
              }
            }
          }
          if(max1==0)
          {
            break;
          }
          bw.write("出现次数排在第 "+b+" 位的单词是 "+key2+" 出现次数是 "+a3);
          bw.newLine();
          System.out.print("单词 "+key2+"次数"+a3+" ");
          if(ww==www)
          {
            System.out.println();
            break;
          }
          ww++;
          map.put(key2,0);//输出之后让他的values变为0,防止阻碍后面的判断
        }
      }
      if(ww==www)
      {
        System.out.println();
        break;
      }
    }
    System.out.println("相关数据已经全部写入相应的文件夹里(在屏幕上也进行了显示)");
    bw.close();
    fw.close();
  }
  static private void getDirectory(File file) throws IOException 
  {
     File flist[] = file.listFiles();
     if (flist == null || flist.length == 0) {
       return;
     }
     for (File f : flist) {
       if (f.isDirectory()) {
         //这里将列出所有的文件夹
          getDirectory(f);
         //getDirectory(f);
       } else 
       {
         
         System.out.println("file==>" + f.getAbsolutePath());
         
         gongneng( f.getAbsolutePath());
         System.out.println();
       }
     }
  }
  static int q1=0;
  static Scanner sc=new Scanner(System.in);
  public static void main(String[] args)throws IOException
  {
    String path="D:\\新建文件夹 (10)"; 
    File fm=new File(path);  
    getDirectory(fm); 
  }
}

主要是关于文件目录中寻找文件,以及递归调用的相关操作。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java冒泡排序和快速排序代码

    java冒泡排序和快速排序代码

    本文主要介绍了java冒泡排序和快速排序的实例代码。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-04-04
  • MyBatis配置不同级别的日志输出

    MyBatis配置不同级别的日志输出

    MyBatis提供多种日志框架集成,如SLF4J、Log4j2、Logback等,通过配置日志框架和调整日志级别,可以实现详细的SQL日志记录,本文就来介绍一下,感兴趣的可以了解一下
    2024-12-12
  • spring boot接收请求常用注解示例详解

    spring boot接收请求常用注解示例详解

    这篇文章介绍了Spring Boot中常用的接收请求的注解,包括`@RequestBody`、`@PathVariable`、`@RequestParam`和`@DateTimeFormat`,并提供了每个注解的示例,感兴趣的朋友跟随小编一起看看吧
    2025-02-02
  • SpringBoot详细讲解异步任务如何获取HttpServletRequest

    SpringBoot详细讲解异步任务如何获取HttpServletRequest

    在使用框架日常开发中需要在controller中进行一些异步操作减少请求时间,但是发现在使用@Anysc注解后会出现Request对象无法获取的情况,本文就此情况给出完整的解决方案
    2022-04-04
  • java stringbuffer的用法示例

    java stringbuffer的用法示例

    这篇文章主要介绍了java stringbuffer的用法示例,字符串缓冲区,是一个容器(当返回到的是String时而且长度不确定,数据类型不确定时就可以用StringBuffer)其实底层还是数组,只是被封装了,对外提供了方法,初始容量为16个字符
    2014-01-01
  • spring data简化jpa开发_动力节点Java学院整理

    spring data简化jpa开发_动力节点Java学院整理

    这篇文章主要介绍了spring data简化jpa开发,本文主要讲述 Spring Data JPA,希望能够深入学习 Spring 和 JPA,有兴趣的可以了解下
    2017-09-09
  • Spring Boot加载配置文件的完整步骤

    Spring Boot加载配置文件的完整步骤

    这篇文章主要给大家介绍了关于Spring Boot加载配置文件的完整步骤,文中通过示例代码介绍的非常详细,对大家的学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11
  • SpringBoot图文并茂带你掌握devtools热启动

    SpringBoot图文并茂带你掌握devtools热启动

    这篇文章主要介绍springBoot插件工具热部署Devtools,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Java异常处理学习心得

    Java异常处理学习心得

    本篇文章给大家详细讲述了学习Java异常处理学习的心得以及原理介绍,对此有兴趣的朋友参考下吧。
    2018-01-01
  • JavaWeb中转发与重定向的区别小结

    JavaWeb中转发与重定向的区别小结

    转发和重定向是JavaWeb中常用的两种页面跳转方式,它们在实现上有一些区别,本文主要介绍了JavaWeb中转发与重定向的区别小结,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10

最新评论