Windows系统文件夹中的文件名排序

news2024/11/15 10:24:26

一天张三、李四的同事周五接到王哥的一个任务需求,有一个文件夹,里面有许多图片文件,网页访问某个分类展示文件的时候,王哥希望文件名的展示顺序可以按照Windows资源管理器中文件名升序排序的方式展示。

网站图片目录中有如下图片

1_rain.jpg
2_rain.jpg
3_rain.jpg
10_snow.jpg
11_snow.jpg
12_snow.jpg
7_wind1.jpg
7_wind2.jpg
8_wind.jpg
18_sky.jpg
18_sky_blue.jpg
boy1.jpg
boy2.jpg
1_girl1.jpg
1_girl2.jpg

在Windows文件夹中的升序展示顺序如下:
在这里插入图片描述周五看了看,心想这个调用java.io包中File.listFiles()方法,返回应该也是这个顺序吧,可是如果就这样是不是太简单了?

随后周五编码如下

void paixu(){
	  String sucai = "d:\\sucai"
    File file = new File(sucai);
    File[] files = file.listFiles();
    for (int i = 0; i < files.length; i++) {
        System.out.println(files[i].getName());
    }
}

执行后输出顺序如下:
在这里插入图片描述
“果然和Windows的文件夹排序不一致,我就说王哥不能把这么简单的任务交给我。”

随后周五用搜索引擎找了好久,也找到了一个Java版本的例子,一个JavaScript版本的例子,但例子都说的模棱两可,还是没搞太明白,没能学以致用。只知道Windows的这种排序方式叫做natural order,自然序,这种排序看上去比较符合人类的直觉。

眼看这一天要下班了,他去找了同事张三,说明了自己的困难,张三帮他看了半天,思索了良久,说:“小五啊,不是你三哥不愿意帮你,实在是我水平有限……”

由于时间快下班了,周五有点着急,“我的好三哥,水平有限,你不早说,还在我这看半天”,

“你别急啊,我这不还没说完呢,李四,你四哥,他水平高,你去找他试试”

周五双手合十,“三哥,原谅我有些着急,我去找李四”

周五工位前,李四看着屏幕沉思着,

“怎么样?四哥,这个问题好解决吗?”
“嗯,也好,也不好”

“啊?好怎么理解,不好怎么理解。”

“你晚上请我吃饭,问题就好解决。你不请我吃饭,问题就不好解决。”

“晚饭我请了,地点你定,怎么样?”

“咱可得说话算数”

“一口吐沫一个钉”

说完,李四拿起键盘一顿输出,随后按下shift + F10运行。
控制台输出如下:

1_girl1.jpg
1_girl2.jpg
1_rain.jpg
2_rain.jpg
3_rain.jpg
7_wind1.jpg
7_wind2.jpg
8_wind.jpg
10_snow.jpg
11_snow.jpg
12_snow.jpg
18_sky.jpg
18_sky_blue.jpg
boy1.jpg
boy2.jpg

“行了,你跟Windows比比,看看是不是一样的”,李四说完起身回了自己工位。

周五仔细对比了一会儿,确实一模一样,一点毛病都没有。随后佩服的走到李四工位前,“四哥,你真是我亲哥,一会儿下班咱们走起!”

Comparator<String> naturalOrderComparator = new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                int index1 = 0, index2 = 0;
                while (index1 < s1.length() && index2 < s2.length()) {
                    char c1 = s1.charAt(index1);
                    char c2 = s2.charAt(index2);
                    if (Character.isDigit(c1) && Character.isDigit(c2)) {
                        int num1 = 0, num2 = 0;
                        while (index1 < s1.length() && Character.isDigit(s1.charAt(index1))) {
                            num1 = num1 * 10 + s1.charAt(index1++) - '0';
                        }
                        while (index2 < s2.length() && Character.isDigit(s2.charAt(index2))) {
                            num2 = num2 * 10 + s2.charAt(index2++) - '0';
                        }
                        if (num1!= num2) {
                            return Integer.compare(num1, num2);
                        }
                    } else {
                        if (c1!= c2) {
                            return c1 - c2;
                        }
                        index1++;
                        index2++;
                    }
                }
                return s1.length() - s2.length();
            }
        };

周五将李四的代码总结好,找王哥review了代码push到仓库,网站的展示页面就生效了。

晚上周五请李四吃了顿大餐。后来周五发现,不止Windows系统,在日常用的Linux系统中文件夹中文件名的排序也是这样的顺序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2152927.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程序遇到问题错误bug时的13种解决方法途径总结以及之前的一些具体例子

目录 1 信心--没有解决不了的bug 2 耐心、不要着急、静下心来、用脑思考 2.1 开始解决问题前不要着急&#xff0c;先思考 2.2 在解决问题的过程中也不要着急&#xff0c;要冷静思考 3 网络搜索 4 大模型问答&#xff1a;必应、kimi、通义千问、文心一言 5 看芯片手册、S…

0921VGG网络实现

深度学习之VGG网络搭建 1.VGG动机2.VGG架构3.代码4.结论1.VGG动机 随着卷积网络在计算机视觉领域的快速发展,越来越多的研究人员开始通过改变模型的网络结构在提高在图像识别任务中的精度,例如使用更小的卷积核和步长[2]。基于类似的想法,论文作者提出可以尝试通过改变卷积…

【设计模式】创建型模式(三):单例模式

创建型模式&#xff08;三&#xff09;&#xff1a;单例模式 1.概念2.案例3.实现方式3.1 懒汉式&#xff0c;线程不安全3.2 懒汉式&#xff0c;线程安全3.3 饿汉式3.4 双检锁/双重校验锁&#xff08;DCL&#xff0c;Double-Checked Locking&#xff09;3.5 登记式/静态内部类3.…

俄罗斯OZON新生儿产品好不好卖,OZON新生儿产品

Top1 遥控水球坦克 Танк на радиоуправлении стреляющий орбизами PANAWEALTH 商品id&#xff1a;1384249985 月销量&#xff1a;692 欢迎各位OZON卖家朋友点击这里选品&#xff1a; &#x1f449; D。DDqbt。COm/74rD 遥控射击水…

【项目管理进阶】风险问题

前言 各位盆友&#xff0c;你们期待的项目管理进阶系列有新的消息&#xff0c;请注意查收&#xff0c;并反馈哦~ 在参加项目的过程中&#xff0c;你是否面临或参加过类似如下的场面&#xff1a; 为了立项&#xff0c;先调研市场、技术、社会、组织内部的现状为了科学的管理项目…

如何使用Claude进行Android App开发 —— 基于Jetpack和Compose的电影App实例

如何使用Claude进行Android App开发 —— 基于Jetpack和Compose的电影App实例 近年来&#xff0c;人工智能&#xff08;AI&#xff09;在软件开发中的应用越来越广泛&#xff0c;帮助开发者在设计、编码、测试和优化中提高生产效率。Claude是Anthropic开发的一款强大的AI助手&…

Redis的三种持久化方法详解

Redis持久化机制详解 | JavaGuide Redis 不同于 Memcached 的很重要一点就是&#xff0c;Redis 支持持久化&#xff0c;而且支持 3 种持久化方式: 快照&#xff08;snapshotting&#xff0c;RDB&#xff09;只追加文件&#xff08;append-only file, AOF&#xff09;RDB 和 A…

Vue使用axios二次封装、解决跨域问题

1、什么是 axios 在实际开发过程中&#xff0c;浏览器通常需要和服务器端进行数据交互。而 Vue.js 并未提供与服务器端通信的接口。从 Vue.js 2.0 版本之后&#xff0c;官方推荐使用 axios 来实现 Ajax 请求。axios 是一个基于 promise 的 HTTP 客户端。 关于 promise 的详细介…

C++:类和对象OJ题

目录 一、求123...n 二、计算日期到天数的转换 三、日期差值 四、打印日期 一、求123...n 这里先把题目链接放在这里求123.....n 描述&#xff1a; 求123...n&#xff0c;要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句&#xff08;A?B:C…

鸿萌数据恢复服务: 修复 Windows, Mac, 手机中 “SD 卡无法读取”错误

天津鸿萌科贸发展有限公司从事数据安全服务二十余年&#xff0c;致力于为各领域客户提供专业的数据恢复、数据备份解决方案与服务&#xff0c;并针对企业面临的数据安全风险&#xff0c;提供专业的相关数据安全培训。 公司是多款国际主流数据恢复软件的授权代理商&#xff0c;为…

老年人养生之道:岁月静好,健康常伴

老年人养生之道&#xff1a;岁月静好&#xff0c;健康常伴 随着年岁的增长&#xff0c;老年人更需注重养生&#xff0c;以维持身心的和谐与健康&#xff0c;享受幸福晚年。养生不仅是一种生活态度&#xff0c;更是一种智慧的选择&#xff0c;它涵盖了饮食、运动、心理、社交等…

搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(一)-概述

简介 此前的专栏介绍Onesearch1.0和2.0&#xff0c;详情参考4 参考资料&#xff0c;本文解释onesearch 3.0&#xff0c;从Elasticsearch6升级到Elasticsearch8代码实现 &#xff0c;Elasticsearch8 废弃了high rest client&#xff0c;使用新的ElasticsearchClient&#xff0c;…

Hash入门-通过线性探测解决哈希冲突

unordered_set void test_unordered_set() {unordered_set<int> us;us.insert(4);us.insert(2);us.insert(1);us.insert(5);us.insert(6);us.insert(2);us.insert(2);//去重unordered_set<int>::iterator it us.begin();while (it ! us.end()){cout << *it…

Springboot使用ThreadPoolTaskScheduler轻量级多线程定时任务框架

简介&#xff1a; Spring注解定时任务使用不是很灵活&#xff0c;如果想要灵活的配置定时任务&#xff0c;可以使用xxl-job 或者 quartz等定时任务框架&#xff0c;但是过于繁琐&#xff0c;可能成本较大。所以可以使用ThreadPoolTaskScheduler来灵活处理定时任务 ThreadPoolT…

人工智能开发实战辅助诊断应用解析

内容导读 项目分析预备知识项目实战 一、项目分析 1、提出问题 随着人们生活水平的提升和健康意识的增强&#xff0c;民众定期进行身体健康体检已成为常态&#xff0c;这种早期的疾病检测和筛查可以及早发现身体里已经出现的异常体征信息&#xff0c;做出正确诊断和有效处理…

分布式系统的概念与设计模式

概念 定义&#xff1a;分布式系统是指将数据和计算任务分散到多个独立的计算机上&#xff0c;这些计算机通过网络进行通信和协作&#xff0c;共同对外提供服务。分布式系统不仅提高了系统的可靠性和可扩展性&#xff0c;还增强了系统的并发处理能力和数据管理能力。 特点&…

内存:生成式AI带来全新挑战与机遇

之前小编也写过多篇AI存储相关的文章&#xff0c;包括AI背景与分层存储的分析&#xff0c;以及AI存储重点从训练转向推理等内容。具体参考&#xff1a; 深度剖析&#xff1a;AI存储架构的挑战与解决方案 存储正式迈入超大容量SSD时代&#xff01; 这可能是最清晰的AI存储数据…

多线程篇七

多线程篇七 若笔者理解有误&#xff0c;欢迎交流指正⭐ 定时器 什么是定时器 听到定时器&#xff0c;首先想到的是“闹钟”.到一个设置好的时间之后就执行某个指定好的代码.(在实际开发中非常常用&#xff0c;如网络通信【邮件发送】) 你在抢演唱会门票&#xff0c;已经到了…

使用madExcept检测内存泄漏

代码异常堆栈跟踪&#xff1a;Mad Except 一、安装 官网 运行&#xff0c;选择madExcept5然后安装。 输入yes继续 二、使用 新建一个VCL项目 在project中多了一项设置 选择OK后会发现项目多了几个引用单元。 此时运行程序&#xff0c;再退出&#xff0c;会显示没有任何内存…

prober found high clock drift,Linux服务器时间不能自动同步,导致服务器时间漂移解决办法。

文章目录 一、场景二、问题三、解决办法&#xff08;一&#xff09;给服务器添加访问网络能力&#xff08;二&#xff09;手动同步1. 检查有没有安装ntp2. 没有安装ntp则离线安装ntp2.1 下载安装包2.2 安装2.3 启动 ntp 3. 设置内部时钟源3.1 编辑/etc/ntp.conf3.1 重启ntp服务…