我有一个函数列出给定路径下的文件
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是在方法
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集合的教程,了解
List
和ArrayList
是如何工作的。 - 如果这是一个关于数组的练习,而不是生产代码,你必须重新实现你的函数,只使用数组。