我有文件中的Java数组如下文件阵列,文件和目录
File[] fileList = new File("c:/data").listFiles();
文件列表中的对象有文件和目录。我想知道这些项目将在fileList对象中的顺序(文件首先是文件,然后是目录,反之亦然)。
是对fileList对象内项目的顺序将保持相同每次或它所依赖的任何因素?
在此先感谢。
我有文件中的Java数组如下文件阵列,文件和目录
File[] fileList = new File("c:/data").listFiles();
文件列表中的对象有文件和目录。我想知道这些项目将在fileList对象中的顺序(文件首先是文件,然后是目录,反之亦然)。
是对fileList对象内项目的顺序将保持相同每次或它所依赖的任何因素?
在此先感谢。
listFiles方法有或没有过滤器不保证任何顺序。
但是,它返回一个数组,您可以使用Arrays.sort()进行排序。
为了得到目录开始我会重复使用isDirectory
http://docs.oracle.com/javase/7/docs/api/java/io/File.html#isDirectory()
正如File#listFiles()
API称,这是推荐使用的方法
不保证所得到阵列 在名称字符串会出现在任何特定的顺序时检查的API;他们不是,特别是, 保证按字母顺序出现。
如果你看看docs,它清楚地解释:
返回抽象路径名表示此抽象路径名表示的目录中的文件的数组。 如果这个抽象路径名不表示一个目录,那么这个方法返回null。否则,将返回一个File对象数组,其中一个用于目录中的每个文件或目录。表示目录本身和目录的父目录的路径名不包含在结果中。每个生成的抽象路径名都是使用File(File,String)构造函数从此抽象路径名构建而来的。因此,如果这个路径名是绝对的,那么每个结果路径名都是绝对的;如果此路径名是相对的,则每个生成的路径名将相对于相同的目录。
无法保证结果数组中的名称字符串将以任何特定顺序出现;他们并不特别保证按字母顺序出现。
数组两次提取目录在刚读listFiles方法的说明 – swapnil7