选择目录中的一系列文件,Java

时间:2014-03-12 16:42:02

标签: java arrays file sorting

我有一个列出给定路径下的文件的函数

public static String[] listFiles(String path)

文件名为course_1 -to-course_15。

我想实现一些功能,只允许我选择给定范围内的文件:

public static String[] listFiles(String path, int startIndex, int endIndex)

其中作为参数传递的int对应于1 - 15。

例如

如果startIndex = 9,endIndex = 11,则只选择:

course_9 course_10 course_11

有没有办法实现这个功能而不会使功能相对复杂?此外,没有使用文件扩展名。

修改 我还要提一下,路径是文件所在的根目录:

for(String content:localDirectory.list()){
    if(content!=null){
        File contentFile= new File(path + "/" + content);                   

        if(!contentFile.isDirectory()){
            files.add(contentFile.getAbsolutePath());
        }
    }
}

if (files.size()==0)
    return null;
} else{ 
    return files.toArray(new String[files.size()]);

}

其中files是在方法

中初始化的ArrayList

2 个答案:

答案 0 :(得分:1)

来自File reference

  

public File[] listFiles(FilenameFilter filter)

     

返回一个数组   表示目录中文件和目录的抽象路径名   由此抽象路径名表示,满足指定的过滤器。   此方法的行为与listFiles()的行为相同   方法,但返回数组中的路径名必须满足   过滤器。如果给定的过滤器为null,则所有路径名都为   公认。否则,路径名仅当满足时才满足过滤器   FilenameFilter.accept(File, String)时的值为true   在此抽象路径名和名称上调用过滤器的方法   它所代表的目录中的文件或目录。

我相信这个适合你的需要。

修改 如果上述方法无效,请参阅

  

public String[] list(FilenameFilter filter)

     

返回一个字符串数组,用于命名文件和目录   此抽象路径名表示的目录满足指定的目录   过滤。这种方法的行为与该方法的行为相同   list()方法,但返回数组中的字符串必须为   满足过滤器。如果给定的过滤器为null,则所有名称都为   公认。否则,当且仅当时,名称才满足过滤器   FilenameFilter.accept(File, String)时的值为true   在此抽象路径名和名称上调用过滤器的方法   它所代表的目录中的文件或目录。

根据内森休斯的评论。

答案 1 :(得分:0)

这是使用List实现的基本想法。请注意,此函数仅生成所有可能的文件名,而不检查这些文件是否确实存在。

public static String[] listFiles(String path, int startIndex, int endIndex) {
    // create an dynamically growing list to store the resulting file names
    List<String> namesList = new ArrayList<String>();
    // iterate from startIndex to endIndex inclusive
    for (int i = startIndex; i <= endIndex; i++) {
        // construct the desired file name
        String name = path + "_" + i;
        // and add it to the List
        namesList.add(name);
    }
    // convert the List to an array and return the array
    return namesList.toArray();
}

附加说明:

  • 查看tutorial about Java Collections,了解ListArrayList的工作原理。
  • 如果这是关于数组而不是生产代码的练习,则必须重新实现函数以仅使用数组。