java以什么顺序对文件/目录进行排序?

时间:2015-03-07 18:50:06

标签: java

我对java有点新,并且我正在尝试创建一个循环并打印出指定位置内所有目录的程序。以下是我到目前为止的情况:

import java.io.File;


public class main{

    public static void main(String[] args) {
        File[] files = new File("/media/will/External/Movies").listFiles();
        showFiles(files);
    }

    public static void showFiles(File[] files) {
        String name;
        for (File file : files) {
            if (file.isDirectory()) {
                name = file.getName();
                if (!(name.contains("!")) && name.contains("(") && name.contains(")")) {
                    System.out.println("Directory: " + name);
                }
                showFiles(file.listFiles()); // Calls same method again.
            } else {
                // System.out.println("File: " + file.getName());

            }
        }
    }
}

正如您所看到的,我在那里有一些检查只打印出某些文件夹名称(必须包含“(”和“)”并且不能包含“!”)。

我在控制台中获得的一段输出是:

Directory: The Matrix (1999)
Directory: The Matrix Reloaded (2003)
Directory: The Matrix Revolutions (2003)
Directory: American Pie 1 (1999)
Directory: American Pie 2 (2001)
Directory: American Pie 3 - The Wedding (2003)
Directory: American Pie 4 - Band Camp (2005)
Directory: American Pie 5 - The Naked Mile (2006)
Directory: American Pie 6 - Beta House (2007)
Directory: American Pie 7 - The Book of Love (2009)
Directory: American Pie 8 - Hole In One (2010)
Directory: Borat (2006)
Directory: Casino Royale (2006)
Directory: Despicable Me 2 (2013)
Directory: Elysium (2013)
Directory: Horrible Bosses (2011)
Directory: Finding Nemo (2003)
Directory: Friday Night Lights (2004)
Directory: Full Metal Jacket (1987)
Directory: Gladiator (2000)
Directory: Hannibal (2001)
Directory: Nightcrawler (2014)
Directory: How To Train Your Dragon (2010)
Directory: I Am Legend (2007)

据我所知,目前的订单没有权利或理由我得到了返回的目录。对于某些部分,它似乎是按字母顺序排列的,但对于其他区域,它似乎是随机的。

最终目标是输出按字母顺序排列,但我想了解为什么这个顺序首先出现。

谢谢!

3 个答案:

答案 0 :(得分:4)

见这里:

http://docs.oracle.com/javase/7/docs/api/java/io/File.html
你正在打电话

listFiles
public File[] listFiles()

我引用了java docs(我提供的列表):

  

"无法保证结果数组中的名称字符串将以任何特定顺序出现;特别是,它们不能保证按字母顺序出现。"

如果要对文件进行排序,请执行以下操作:

File[] fileList = folder.listFiles();

Arrays.sort(fileList);

答案 1 :(得分:3)

返回目录的顺序取决于您的文件系统,而不是Java。某些文件系统始终按字母顺序列出文件名;其他人不要。这里没什么好理解的;只需根据需要对文件进行排序。

答案 2 :(得分:1)

这是文件存储在文件系统中的顺序,理论上可以是任何文件系统,但很可能与创建文件的顺序有关。