我对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)
据我所知,目前的订单没有权利或理由我得到了返回的目录。对于某些部分,它似乎是按字母顺序排列的,但对于其他区域,它似乎是随机的。
最终目标是输出按字母顺序排列,但我想了解为什么这个顺序首先出现。
谢谢!
答案 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)
这是文件存储在文件系统中的顺序,理论上可以是任何文件系统,但很可能与创建文件的顺序有关。