任何人都拥有良好的资源或在C#中为FileInfo数组提供自然顺序排序的样本?我正在实现IComparer我的各种界面.
我有一个简单的Java程序,它读取文件目录并输出文件列表.我按名称对文件进行排序:
String [] files = dirlist.list();
files = sort(files);
Run Code Online (Sandbox Code Playgroud)
我的问题是它以不同于Windows资源管理器的方式按名称排序.
例如,如果我有这些文件:abc1.doc,abc12.doc,abc2.doc.
Java会像这样排序:
abc1.doc
abc12.doc
abc2.doc
Run Code Online (Sandbox Code Playgroud)
当我在Windows资源管理器中打开文件夹时,我的文件排序如下:
abc1.doc
abc2.doc
abc12.doc
Run Code Online (Sandbox Code Playgroud)
如何让Java在Windows资源管理器中对文件进行排序?这是Windows的伎俩吗?
我想在另一个问题上使用Sander Pham建议的代码.我需要像Windows资源管理器那样对字符串名称的java ArrayList进行排序.他的代码适用于一切,但只针对一个问题.我本来希望对这个问题发表评论,但我需要更多的声誉点来评论.无论如何......他建议使用自定义比较器实现的类并使用它来比较字符串名称.这是该类的代码:
class IntuitiveStringComparator implements Comparator<String>
{
private String str1, str2;
private int pos1, pos2, len1, len2;
public int compare(String s1, String s2)
{
str1 = s1;
str2 = s2;
len1 = str1.length();
len2 = str2.length();
pos1 = pos2 = 0;
int result = 0;
while (result == 0 && pos1 < len1 && pos2 < len2)
{
char ch1 = str1.charAt(pos1);
char ch2 = str2.charAt(pos2);
if (Character.isDigit(ch1))
{
result = Character.isDigit(ch2) ? compareNumbers() : -1;
}
else if …Run Code Online (Sandbox Code Playgroud)