`
gmleegmlee
  • 浏览: 119725 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java 实现对文件夹排序,找出最大的文件夹,

阅读更多

public class SortUtil
{
    
    /**
     * insertionSort;
     * @param data,    array[];
     * @param first,   0;
     * @param last,    array.length - 1;
     */
    public static void insertionSort(Comparable[] data, int first, int last)
    {
        for(int i = first + 1; i <= last; i++)
        {
            Comparable temp = data[i];
            int j = i - 1;
            for(; j >= first && data[j].compareTo(temp) > 0; j--)
            {
                data[j + 1] = data[j];
            }
            data[j + 1] = temp;
        }
    }
    
    /**
     * getMaxCompare;
     * @param data,   array[];
     * @return        Max Value;
     */
    public static Comparable getMaxCompare(Comparable[] data)
    {
        insertionSort(data, 0, data.length - 1);
        return data[data.length - 1];
    }
    
    public static void main(String[] args)
    {
        Comparable[] data = {3,2};//,4,12,43,654,12,242,124,151,87,1,7,1,3,2,9,3,6,2,7,8};
        insertionSort(data, 0 , data.length - 1);
        for(int i = 0; i < data.length; i++)
        {
            System.out.print(data[i] +",");
        }
        System.out.println();
        System.out.print(getMaxCompare(data));
    }

}







public class FileEntity implements Comparable
{
    /**
     * 5.01.01.T05$12.11.20T28,12.11.20T28$12.11.20T45
     */
    public static final String FileSeparatorTag = "T";
    public String filename = "5.01.01.T05$12.11.20"+FileSeparatorTag+"28";
    
    @Override
    public int compareTo(Object obj)
    {
        String nextFileName = ((FileEntity) obj).filename;
        return Integer.parseInt(this.filename.substring(this.filename.lastIndexOf(FileSeparatorTag) + 1)) - Integer.parseInt(nextFileName.substring(nextFileName.lastIndexOf(FileSeparatorTag) + 1));
    }

    public static void main(String[] args)
    {
        String tmp = "5.01.01.T05$12.11.20"+FileSeparatorTag+"28";;
        
        String  tmps = tmp.substring(tmp.lastIndexOf(FileSeparatorTag) + 1);
        System.out.println("" + tmps);
    }
  

}






public class FileClient
{

    /**
     * eg.dirs: 5.01.01.T05$12.11.20T28,12.11.20T28$12.11.20T45 getDirList
     * 
     * @param filepath ,directory ;
     * @return ,list directories;
     */
    public static FileEntity[] getListDirs(String filepath)
    {
        List tmpList = new ArrayList();
        File dir = new File(filepath);
        File[] files = dir.listFiles();
        for(int i = 0; i < files.length; i++)
        {
            String strFile = files[i].getAbsolutePath().substring(files[i].getAbsolutePath().lastIndexOf(File.separator) + 1);
            System.out.println(strFile.indexOf("$") + "," + strFile);
            if(files[i].isDirectory() && strFile.indexOf("$") > 0 && strFile.lastIndexOf("$") < strFile.length() - 1
                            && strFile.lastIndexOf(FileEntity.FileSeparatorTag) < strFile.length() - 1)
            {
                FileEntity entity = new FileEntity();
                entity.filename = files[i].getAbsolutePath();
                tmpList.add(entity);
            }
        }
        if(tmpList.size() > 0)
        {
            FileEntity[] dirs = new FileEntity[tmpList.size()];
            for(int i = 0; i < tmpList.size(); i++)
            {
                dirs[i] = (FileEntity)tmpList.get(i);
            }
            return dirs;
        }
        else
        {
            FileEntity entity = new FileEntity();
            entity.filename = filepath;
            return new FileEntity[]{entity};
        }
    }

    /**
     * getMaxDirAbsolutePath
     * 
     * @param filepath , input dir, directory;
     * @return , maxDirAbsolutePath;
     */
    public static String getMaxDirAbsolutePath(String filepath)
    {
        FileEntity[] dirs = getListDirs(filepath);
        for(int i = 0; i < dirs.length; i++)
        {
            System.out.println("dirs:" + dirs[i].filename);
        }

        SortUtil.insertionSort(dirs, 0, dirs.length - 1);
        for(int i = 0; i < dirs.length; i++)
        {
            System.out.println("insertionSort:" + dirs[i].filename);
        }

        FileEntity maxFileEntity = (FileEntity)SortUtil.getMaxCompare(dirs);
        String theMaxDir = maxFileEntity.filename;
        System.out.println("theMaxDir:" + theMaxDir);
        return theMaxDir;
    }

    /**
     * writeProperties
     * 
     * @param propFileName , properties file path;
     * @param key , key;
     * @param value , value;
     */

    public static void writeProperties(String propFileName, String key, String value)
    {
        File propFile = new File(propFileName);
        try
        {
            propFile.createNewFile();
            Properties prop = new Properties();
            // InputStream fis = new FileInputStream(propFileName);
            // // 从输入流中读取属性列表(键和元素对)
            // prop.load(fis);
            // 调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。
            // 强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
            OutputStream fos = new FileOutputStream(propFileName);
            prop.put(key, value);// .setProperty(key, value);
            // 以适合使用 load 方法加载到 Properties表中的格式,
            // 将此 Properties 表中的属性列表(键和元素对)写入输出流
            prop.store(fos, "Update '" + key + "' -->" + value);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

    /**
     * test_readProperties
     * 
     * @param propFileName
     * @param key
     * @param defaultValue
     * @return
     */
    public static String test_readProperties(String propFileName, String key, String defaultValue)
    {
        String value = defaultValue;
        try
        {
            InputStream fis = new FileInputStream(propFileName);
            Properties prop = new Properties();
            prop.load(fis);
            value = prop.getProperty(key, defaultValue);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        System.out.println("value:" + value);
        return value;
    }

    /**
     * eg.dirs: 5.01.01.T05$12.11.20T28,12.11.20T28$12.11.20T45
     * 
     * @param args
     */
    public static void main(String[] args)
    {
        String srcDirPath = "C:/scripts/";
        String destPropPath = "./";
        if(args.length == 2)
        {
            srcDirPath = args[0];
            destPropPath = args[1];
        }
        destPropPath = destPropPath + "theMaxDir" + ".properties";
        String theMaxDir = getMaxDirAbsolutePath(srcDirPath).replaceAll("\\\\", "\\/");
        System.out.println("theMaxDir:" + theMaxDir);

        System.out.println("user.dir=" + System.getProperty("user.dir"));

        writeProperties(destPropPath, "theMaxDir", theMaxDir);

        test_readProperties(destPropPath, "theMaxDir", srcDirPath);
    }

}


分享到:
评论

相关推荐

    文件夹搜索指定字符串软件

    1. **文件I/O操作**:Java的`java.io`包提供了对文件读写的支持,程序需要读取每个文件的内容,然后进行字符串匹配。这涉及到File类的使用,以及InputStream和Reader类来读取文件内容。 2. **目录遍历**:通过File...

    排序综合数据结构课程设计说

    描述: 本课程设计的目的是通过随机函数产生 N 个随机整数(20000 以上),然后使用多种方法对这些数进行排序,比较各个方法的性能,并找出其中两种较快的方法。 标签: 多种 方法 排序 部分内容: 1. 问题描述:本...

    java类查找工具jclassfinder(1b2)

    一个查找java的.class和.java的辅助编程工具,可以批量从jar包或文件夹中查找,支持通配符。此工具需机器上安装有JRE。双击运行。 使用说明: 1、输入要查找的类名。支持通配符*(代表任意多个字符)和?(代表一个字符)...

    java音乐播放器(个性化)

    通过遍历文件夹,找出音频文件,将其元数据(如艺术家、专辑、曲目等)提取出来,展示在播放列表中。用户可以方便地添加、删除、排序和播放这些歌曲。 安全性也是Java音乐播放器关注的重点。由于Java的沙箱模型,它...

    基于Java语言的数据结构设计与实现源码仓库

    其中,堆(Heap)是一种特殊的完全二叉树,其中的每一个节点值都不大于或不小于其子节点的值,它支持快速地在集合中找出最大元素(最大堆)或最小元素(最小堆),在优先队列、堆排序等算法中有广泛应用。...

    Java语言程序设计(第二版)课后第三章习题答案

    例如,可能有解决数组问题的代码,如遍历数组,查找最大值或最小值,或者排序算法的实现。还可能涉及到面向对象编程的题目,如创建自定义类,实现继承,接口,或者多态等。 对于初学者来说,理解和分析这些习题答案...

    leetcode下载-Algorithms-Java:所有算法都用Java实现(用于教育目的)这些实现用于学习目的。实现的效率可能低于Java

    No1:找出数组中能够组成sum的两个数的数组下标 解法:使用Map来存储,如果发现target-arr[i]如果在Map中有数据,那返回下标即可 No3:求出数组能组成最大不重复元素的间隔 解法:使用滑动窗口的思想,不停往前移动...

    whereisclass:在单个指定文件夹或多个文件夹中的 jar 中找到一个 java 类

    在整理项目依赖时,它可以帮你找出重复的类库,避免不必要的资源浪费。 需要注意的是,虽然"whereisclass"提高了搜索效率,但它的效率仍然受到硬盘I/O速度和.jar文件数量的影响。因此,在处理大量.jar文件时,可能...

    java基础数据结构-树

    9. **返回指定节点的索引位置**:找出指定节点在树中的具体位置。 #### 三、树的应用场景 树形结构在现实生活中有着广泛的应用,包括但不限于: 1. **文件系统**:Windows资源管理器中的文件夹和子文件夹结构就是...

    Java桌面搜索 JDesktopSearch

    2. **查询阶段**: 用户输入搜索关键词后,程序将这些关键词与索引数据库进行匹配,找出匹配的文件。 3. **结果显示**: 搜索结果按相关性排序展示,用户可以查看文件名、预览内容以及打开原始文件。 **使用方法** 1....

    leetcode下载-JavaArithmetic:Java练习算法代码(排序,数据结构,小算法练习题)

    No1:找出数组中能够组成sum的两个数的数组下标 解法:使用Map来存储,如果发现target-arr[i]如果在Map中有数据,那返回下标即可 No3:求出数组能组成最大不重复元素的间隔 解法:使用滑动窗口的思想,不停往前移动...

    simplePicture.rar

    4. 结果排序:将所有图片按相似度进行排序,找出最相似的图片。 标签中的“图片相似度”和“相似图片”进一步强调了这个工具的核心功能。在实际应用中,这项技术可以用于图片搜索、版权检测、内容识别、人脸识别等...

    基于GraphHopper的Java SpringBoot多途径点路径规划设计源码

    路径规划是指通过计算找出两点之间的最短、最快或最经济的路径。而多途径点路径规划设计则是路径规划中更为复杂的一个分支,它不仅需要计算起点与终点之间的路径,还需要考虑多个途经点的顺序和路径,以满足实际应用...

    java设计模式之禅

    根据给定的信息,“Java设计模式之禅”是一本专注于Java设计模式的专业书籍,旨在帮助不同层次的开发人员理解和应用各种设计模式。以下是对该书提到的一些关键知识点的详细阐述: ### 一、策略模式(Strategy ...

    泡泡堂战车游戏JAVA版源码.rar

    10. **调试与测试**:学习如何使用IDE的调试工具找出并修复代码中的错误,以及进行单元测试和集成测试。 通过研究这个项目,开发者不仅可以学习到游戏开发的具体技术,还能提升项目管理和团队协作的能力。对于初学...

    2021字节跳动面试参考手册.pdf

    - 通过建立哈希表或使用排序等方法找出数组中的重复数字。 以上内容涵盖了Java基础、Java集合框架、Linux常用指令、MySQL基础和数组处理等多个方面,是面试中常见的技术问题,也是IT行业技术面试的必考知识点。

    Java中水晶报表源程序

    2. **放置库文件**:根据描述,有两个库文件夹"lib1"和"lib2",它们包含了运行水晶报表Java版所需的JAR文件。这些文件需要被添加到你的Java项目的类路径(ClassPath)中,通常是将它们放入项目的"lib"目录,然后在...

    lrucacheleetcode-algorithm-practice:算法练习,java实现

    素数判断是基础数学问题,常见的算法有埃拉托斯特尼筛法,它通过从2开始逐个排除每个数的倍数,找出所有小于某个给定数的素数。 2. **数组排序**:数组排序是一个广泛研究的算法主题,包括快速排序、归并排序、冒泡...

    数据结构_算法_集合_并交差运算实现_1741873578.zip

    例如,在编程中,我们经常需要处理多个数据集合的关系,如查找两个用户列表中都有的用户、合并多个数据集、找出存在于一个数据集中但不在另一个数据集中的元素等。这些操作都可以通过实现并集、交集和差集的算法来...

Global site tag (gtag.js) - Google Analytics