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

wKa*_*vey 2 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());

            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我在那里进行了一些检查以仅打印出某些文件夹名称(必须同时包含“(”和“)”并且不能包含“!”)。

我在控制台中得到的一段输出是这样的:

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)
Run Code Online (Sandbox Code Playgroud)

据我所知,当前的顺序没有正确或理由让我返回目录。对于某些部分,它似乎是按字母顺序排列的,但对于其他区域,它似乎是随机的。

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

谢谢!!

adr*_*der 6

看这里 :

http://docs.oracle.com/javase/7/docs/api/java/io/File.html
Run Code Online (Sandbox Code Playgroud)

你在打电话

listFiles
public File[] listFiles()
Run Code Online (Sandbox Code Playgroud)

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

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

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

File[] fileList = folder.listFiles();

Arrays.sort(fileList);
Run Code Online (Sandbox Code Playgroud)