我有一个列出给定路径下的文件的函数
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答案 0 :(得分:1)
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();
}
附加说明:
List
和ArrayList
的工作原理。