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);

    }
}

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

原文地址:https://www.cnblogs.com/dazhi151/p/11794760.html

时间: 2024-10-17 17:29:37

java对于目录下的相关文件的单词操作的相关文章

php删除指定目录下的相关文件实例

在php中删除文件最简单的办法直接使用unlink命令,但本文章介绍的是需要删除指定目录下的指定文件,所以我需要遍历删除了,具体看这个例子.  代码如下 复制代码 <?php //删除指定文件夹下的非法文件 function my_del($dir)  {     if(is_dir($dir)){         //打开指定文件夹         if($handle = opendir($dir))         {             while(false !== ($file

JAVA之File类 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件

package ioTest.io3; import java.io.File; /* * 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件 . * 并将文件夹和文件名称打印在控制台上面.并且要显示文件目录的层级 * 注:运用了递归的算法. */ public class FileDemo3 { public static void main(String[] args) { File dir=new File("F:\\黑马学习日程\\"); //File dir=new Fi

Java API 读取HDFS目录下的所有文件

/** * 获取1号店生鲜食品的分类id字符串 * @param filePath * @return */ public String getYHDSXCategoryIdStr(String filePath) { final String DELIMITER = new String(new byte[]{1}); final String INNER_DELIMITER = ","; // 遍历目录下的所有文件 BufferedReader br = null; try { F

java 20 -3 递归之删除特定目录下的特定文件

1 /* 2 需求:删除H:\demo目录下的带内容的文件 3 分析: 4 A:封装该目录 5 B:获取该目录下所有的文件或文件夹的File数组 6 C:遍历该File数组,获取每一个File对象 7 D:判断所遍历的FIle对象 8 是否是文件夹 9 是:返回步骤B 10 不是:判断里面是否有内容 11 有:删除 12 不是:不理 13 B-D设为递归方法: 14 返回类型;void 15 参数列表:File xxx 16 出口:文件里面有内容 17 */ 18 package zl_DiGu

Java web 项目读取src或者tomcat下class目录下的xml文件或者properties文件

//生成一个文件对象: File file = new File(getClass().getClassLoader().getResource("test.xml").getPath()); //直接得到一个输入流: InputStream in = getClass().getClassLoader().getResourceAsStream("test.xml"); //在当前线程获取--这个方法不大稳定 //String path = Thread.curr

Java读取指定目录下的所有文件(子目录里的文件也可递归得到)

1 import java.io.File; 2 3 public class ReadFile { 4 5 public static void main(String[] args) { 6 7 // path是指定目录的绝对路径 8 String path = "/Users/tonychan/Workspaces/MyEclipse 2017 CI/Zhangjiajie/WebRoot/pics"; 9 getFile(path); 10 11 } 12 13 // 给定目录

如何通过简单的java代码读取本地磁盘目录下的所有文件或者文件夹?

public class FileTest {  public static void main(String[] args) {   //注意:File导 import java.io.File 包   File file = new File("K:\\");   File[] listFiles = file.listFiles();   for (File file2 : listFiles) {    /**打印目录下所有文件以及文件夹 只需要输出file2就行了**/   

复制指定目录下的指定文件,并修改后缀名 很重要,也很难!!!

package cn.idcast2; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FilenameFilter; im

javaFile循环列出指定目录下的所有文件(源代码)

package javatest.basic22; import java.io.File; import java.io.IOException; public class FileTest { public void getFileName(File file){ //判断是否是文件 if(file.isFile()){ System.out.println(file.getPath()+file.getName()); }else{ //如果是目录,列出当前目录下所有目录 File[] f