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



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

public static String[] listFiles(String path)

文件命名为course_1 - course_15。

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

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

作为实参传递的int型对应于1 - 15。

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

course_9course_10course_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

From File reference:

public File[] listFiles(FilenameFilter filter)

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

指定目录中的文件或目录。

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

编辑:

如果以上没有帮助,请参见

public String[] list(FilenameFilter filter)

返回一个字符串数组,该数组命名目录中的文件和目录满足指定路径的抽象路径名表示的目录过滤器。方法的行为与方法相同list()方法,除了返回数组中的字符串必须满足过滤器。如果给定的过滤器为空,则所有名称都为空接受。否则,名称满足过滤器当且仅当值为true时,FilenameFilter.accept(File, String)方法在此抽象路径名和名称上调用筛选器的

指定目录中的文件或目录。

按照Nathan Hughes的评论

这是使用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();
}

其他说明:

  • 看一看关于Java集合的教程,了解ListArrayList是如何工作的。
  • 如果这是一个关于数组的练习,而不是生产代码,你必须重新实现你的函数,只使用数组。

相关内容

  • 没有找到相关文章

最新更新