首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据名称(即整数)对目录进行排序?

如何根据名称(即整数)对目录进行排序?
EN

Stack Overflow用户
提问于 2013-08-22 11:31:27
回答 2查看 111关注 0票数 2

嗨,我想根据号码对目录进行排序。我有名为11-20,1-5,6-10,21-30等的目录,现在我想根据其中的数字对它们进行排序,以便1到N个目录按顺序排列,我指的是顺序1-5,6-10,11-20,21-30。我正在使用下面的代码,但它不起作用。

代码语言:javascript
运行
复制
File[] dirList = mainDir.listFiles();
Arrays.sort(dirList);

我是新来的Java文件和目录操作,请提前帮助谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-22 11:35:13

以下一行:

代码语言:javascript
运行
复制
Arrays.sort(dirList);

使用File#compareTo()方法对文件进行排序,该方法基本上按照路径名对文件进行排序。

您必须创建比较器的自定义实现,然后调用:

代码语言:javascript
运行
复制
Arrays.sort(dirList, new YourCustomComparator());

例如:

代码语言:javascript
运行
复制
Comparator<File> comparator = new Comparator<File>() {
  @Override
  public int compare(File o1, File o2) {
    /*
     * Here, compare your two files with your own algorithm.
     * Here is an example without any check/exception catch
     */
    String from1 = o1.getName().split("-")[0]; //For '1-5', it will return '1' 
    String from2 = o2.getName().split("-")[0]; //For '11-20', it will return '11'

    //Convert to Integer then compare : 
    return Integer.parseInt(from2)-Integer.parseInt(from1);
  }
}

//Then use your comparator to sort the files:
Arrays.sort(dirList, comparator);
票数 11
EN

Stack Overflow用户

发布于 2013-08-22 11:37:33

除了阿诺兹的答案外,如果你只想拥有目录,你还可以使用文件筛选器:

代码语言:javascript
运行
复制
FileFilter filter = new FileFilter()
{
   public boolean accept(File file) {
     return file.isDirectory();
   }
};

File[] dirList = mainDir.listFiles(filter);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18379187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档