Windows按名称排序问题

偶然发现一个按名称排序的文件夹内,文件顺序是混乱的,例如:

在一个文件夹内建立如下三个文件:

0F.txt

1A.txt

02.txt

按名称/升序排列, 将得到上述结果,0F在最前,02在最后。

百思不得其解,同样是0开头,为什么02会被排在1A之后?

Win7,Win8,及Windows server 2008均按上述规则排序。

 

查了一下,发现微软的网站上对此有说明:

http://support.microsoft.com/kb/319827

 

原来对于有数字的文件名,windows会尝试找出数字部分,按数字大小进行排序。

上述三个文件名中,第一个提取出0(F被忽略),第二个提取出1,第三个提取出02(2),结果就是上面这样了……

多么愚蠢和无聊的想法啊!这竟然还是各版本Windows默认的排序方式。

 

可通过修改注册表的方式使Windows按旧版的字母顺序排序,方式是在

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Currentversion\Policies\Explorer]

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Currentversion\Policies\Explorer]

 

两个路径下新建一个名为NoStrCmpLogical的字段,数据类型是DWORD,令其值为1,然后重启电脑即可。

注册表文件内容如下:

--------------------------------------------------

Windows Registry Editor Version 5.00

 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Currentversion\Policies\Explorer]
"NoStrCmpLogical"=dword:00000001

 

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Currentversion\Policies\Explorer]
"NoStrCmpLogical"=dword:00000001

 

--------------------------------------------------

复制虚线之间的部分(注意包含空行),另存为reg文件,即可直接导入注册表。

 

转载于:https://www.cnblogs.com/Moosdau/p/3296384.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java语言编写一个程序,实现在安卓系统中将文件按Windows系统的文件排序方法排序的功能。具体实现方式如下: 1. 获取指定目录下的所有文件列表。 2. 使用Java的Collections类中的sort方法,对文件列表进行排序。 3. 在sort方法中传入一个实现Comparator接口的比较器对象,实现按Windows系统的文件排序方法排序。 4. 比较器对象的实现方式如下: ```java import java.util.Comparator; public class WindowsFileComparator implements Comparator<File> { @Override public int compare(File file1, File file2) { // 判断是否为文件夹 if (file1.isDirectory() && file2.isDirectory()) { // 两个文件夹按照名称排序 return file1.getName().compareTo(file2.getName()); } else if (file1.isDirectory()) { // 文件夹排在文件前面 return -1; } else if (file2.isDirectory()) { // 文件排在文件夹后面 return 1; } else { // 两个文件按照名称排序 return file1.getName().compareTo(file2.getName()); } } } ``` 5. 在程序中调用以上实现方式进行排序,示例代码如下: ```java import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class SortFiles { public static void main(String[] args) { // 指定目录 File directory = new File("/sdcard/"); // 获取目录下所有文件 File[] files = directory.listFiles(); // 转换为List集合 List<File> fileList = new ArrayList<>(); for (File file : files) { fileList.add(file); } // 排序 Collections.sort(fileList, new WindowsFileComparator()); // 输出排序结果 for (File file : fileList) { System.out.println(file.getName()); } } } ``` 以上代码中,我们将指定目录下的所有文件按照Windows系统的文件排序方法排序,并输出排序结果。您可以根据实际需求进行修改和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值