A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

2233

初级黑马

  • 黑马币:5

  • 帖子:1

  • 精华:0

本帖最后由 2233 于 2021-4-21 15:12 编辑

[Java] 纯文本查看 复制代码
package homework.test;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;

public class Test1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入文件夹路径");
        //String path = sc.next();
        System.out.println("请输入文件夹名称");
        String fileName = "杂乱";

        File file = new File("C:\\Users\\康亚男\\Desktop\\录屏");
        TreeMap<Long, File> tm = new TreeMap<>(new Comparator<Long>() {
            //对文件进行排序

            @Override
            public int compare(Long o1, Long o2) {
                int result = (int) (o1 - o2);
                result = (result == 0) ? result = 1 : result;
                return result;

            }
        });
        soutTime(fileName, file, tm);
        if (tm.size() < 1) {
            System.out.println("你输入的文件夹名称不存在");
            System.exit(0);
        }




        Map<Long, File> map = tm.entrySet().stream().collect(Collectors.toMap(en->en.getKey(),en->en.getValue(),(key,value)->key));




        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd HH:mm:ss");
        Date date = new Date();
        Set<Long> longs = map.keySet();
        for (Long aLong : longs) {
            File file1 = map.get(aLong);
            date.setTime(aLong);
            String format = simpleDateFormat.format(date);
            System.out.println("修改时间:"+format+"-------文件路径"+file1.getPath());
        }


    }

    public static void soutTime(String fileName, File file, TreeMap<Long, File> tm) {
        //获取这个文件夹的所有成员
        File[] fileArr = file.listFiles();
        //遍历所有成员
        for (File file1 : fileArr) {
            String file1Name = file1.getName();
            //获取文件夹名称过后判断是否存在
            if (fileName.equals(file1Name)) {
                //判断这个名称是文件夹还是文件
                if (file1.isDirectory()) {
                    //获取文件夹里面的所有文件
                    File[] fileArrChild = file1.listFiles();
                    for (File file2 : fileArrChild) {
                        //获取文件时间,把文件和文件时间的毫秒值存入集合
                        long fileTime = file2.lastModified();
                        tm.put(fileTime, file2);
                    }
                    //已经找到文件夹,不需要继续循环,直接跳出
                    break;
                } else {
                    System.out.println("您输入的是一个文件");
                }
                //如果文件夹名称不匹配,判断是否是个文件夹,如果是就进入文件夹里面寻找
            } else if (file1.isDirectory()) {

                soutTime(fileName, file1, tm);
            }
        }

    }
}
Map<Long, File> map = tm.entrySet().stream().collect(Collectors.toMap(en->en.getKey(),en->en.getValue(),(key,value)->key));这一句如果不加上最后一个(key,value)->key参数就会报错,说key的值重复,没看懂重复再哪儿,求解,我单独弄了一个TreeMap集合试了一下都行,就是再这里说重复了

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马