File中list方法&listFiles方法
1.list方法
1.无参的方法list()
返回类型:字符串数组
功能:返回一个文件夹下的一级子目录和文件名,不带父级目录的名称
代码块:
File file1 = new File("D:\\0XYZ");
String [] str = file1.list();
List li = Arrays.asList(str);
System.out.println(li);
2.有参的方法list(FilenameFilter filter)
参数:过滤器FilenameFilter 接口类型,需要匿名或者对类实现
返回类型:字符串数组
功能:通过过滤器过滤该文件夹下的文件和文件夹
代码块:
返回文件夹下以.docx结尾的文件名的字符串数组
File file1 = new File("D:\\0XYZ");
File file = new File(".doc");
String [] str = file1.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".docx");
}
});
List li = Arrays.asList(str);
System.out.println(li);
2.listFiles方法
1.无参的方法listFiles()
返回类型:File数组
功能:返回一个File类型的数组,数组中存放的是此文件夹下的文件路径+文件名(包含父级目录的完整路径)
代码块:
File file1 = new File("D:\\0XYZ\\Computer");
File [] files = file1.listFiles();
List li = Arrays.asList(files);
System.out.println(li);
2.有参的方法listFiles(FilenameFilter filter)
参数:过滤器FilenameFilter 接口类型,需要匿名或者对类实现
返回类型:File类型数组
功能:通过过滤器过滤该文件夹下的文件和文件夹,返回文件夹+文件名的file类型
代码块:
返回文件夹下以.docx结尾的文件名的File类型数组
File file1 = new File("D:\\0XYZ");
File [] files = file1.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".docx");
}
});
List li = Arrays.asList(files);
System.out.println(li);
3.潜在问题
在使用有参数的方法时,File 相当于传入的文件夹的文件路径,name相当于文件下的所有文件名和文件夹的名称,在进行比较时,因为name是String,所以不能使用==,而使用equals方法,
实际案例:
获取文件夹下与 文件夹相同名称的文件夹名
正确的写法:
File file1 = new File("D:\\0XYZ");
String [] str = file1.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
System.out.println(dir.getName());
boolean b = dir.getName().equals(name);
return dir.getName().equals(name);
}
});
List li = Arrays.asList(str);
System.out.println(li);
错误的写法:
File file1 = new File("D:\\0XYZ");
String [] str = file1.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
System.out.println(dir.getName());
boolean b = dir.getName().equals(name);
return dir.getName()==name;
}
});
List li = Arrays.asList(str);
System.out.println(li);