码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-11-04 21:46:36      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:运行   else   目录   sdi   new   getdir   except   相关   并保存   

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

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

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对于目录下的相关文件的单词操作

标签:运行   else   目录   sdi   new   getdir   except   相关   并保存   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!