方法原型:
String[] list() , 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
String[] list(FilenameFilter filter) ,返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。
File[] listFiles() ,返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
File[] listFiles(FileFilter filter) ,返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
File[] listFiles(FilenameFilter filter) ,返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
Filter和FilenameFilter区别
import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
public static void main(String[] args) {
File file = new File("F://");
File[] str = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if(pathname.isFile()){
return true;
}else{
return false;
}
}
});
File[] str1 = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if(dir.isFile()){
return true;
}else{
return false;
}
}
});
//可以看出FileFilter的accept方法的参数为:文件或目录路径对应的File对象
//而FilenameFilter的accept方法的参数一为:文件的所在 目录 对应的File对象或者目录的File对象,参数二name为文件或目录的名字
//因为dir为对应的是目录,操作起来比较受约束,pathname对应的是路径,操作比较方便
for(File f : str){
System.out.println("文件:"+f.getName());
}
for(File f : str1){
System.out.println("目录:"+f.getName());
}
}
list和listFiles的区别
import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
public static void main(String[] args) {
File file = new File("F://");
//listFiles返回的File数组
File[] str = file.listFiles();
//list返回的只是目录或文件的字符串,不能进行其他操作(isFile,isDirectory之类的)
// String[] str = file.list();
//遍历获得的目录或文件的File数组
for(File s : str){
if(s.isFile()){
System.out.println("文件:"+s.getName());
}
if(s.isDirectory()){
System.out.println("目录:"+s.getName());
}
}
}