listFile()方法介绍
一个目录中可能有多个文件或者文件夹,这个方法就是获取一个目录下的文件和文件夹(所有的)。
public class FileMethodDemo3 {
public static void main(String[] args) {
File dir = new File("e:\\java_code");
//获取的是目录下的当前的文件以及文件夹的名称。
String[] names = dir.list();
for(String name : names){
System.out.println(name);
}
//获取目录下当前文件以及文件对象,只要拿到了文件对象,那么就可以获取其中想要的信息
File[] files = dir.listFiles();
for(File file : files){
System.out.println(file);
}
}
}
要注意的是:
- 获取制定的目录必须存在
- 制定的必须是目录,否则会容易出现异常
文件过滤器
我们获取目录中的所有文件显得有点繁琐,我们想要获取我们想要的文件,Java有解决这个问题的功能
File类中重载的listFile方法,可以接受制定的文件过滤器
public class FileDemo2 {
public static void main(String[] args) {
//获取扩展名为.java所有文件
//创建File对象
File file = new File("E:\\JavaSE1115\\code\\day11_code");
//获取指定扩展名的文件,由于要对所有文件进行扩展名筛选,因此调用方法需要传递过滤器
File[] files = file.listFiles(new FileFilterBySuffix());
//遍历获取到的所有符合条件的文
for (File f : files) {
System.out.println(f);
}
}
}
//定义类实现文件名称 FilenameFilter 过滤器
class FileFilterBySuffix implements FilenameFilter{
public boolean accept(File dir, String name) {
return name.endsWith(".java");
}
}
当我们想要自己选择过滤出来的文件类型,所以我们要改造一下过滤器
public class FileDemo2 {
public static void main(String[] args) {
//获取扩展名为.java所有文件
//创建File对象
File file = new File("E:\\JavaSE1115\\code\\day11_code");
//获取指定扩展名的文件,由于要对所有文件进行扩展名筛选,因此调用方法需要传递过滤器
File[] files = file.listFiles(new FileFilterBySuffix(".java"));
//遍历获取到的所有符合条件的文件
for (File f : files) {
System.out.println(".........."+f);
}
}
}
//定义类实现文件名称FilenameFilter过滤器
class FileFilterBySuffix implements FilenameFilter{
private String suffix ;
//在创建过滤器对象时,明确具体需要过滤的文件名称
public FileFilterBySuffix(String suffix){
this.suffix = suffix;
}
public boolean accept(File dir, String name) {
return name.endsWith(suffix);
}
}
listFiles()可以接受一个FileFilter过滤器,FilenameFilter过滤器中的accept方法接受两个参数,一个是当前文件或文件夹所在的路径,一个是当前文件或文件夹对象的名称
public class FileDemo2 {
public static void main(String[] args) {
//获取扩展名为.java所有文件
//创建File对象
File file = new File("E:\\JavaSE1115\\code\\day11_code");
//获取指定目录下的文件夹
File[] files = file.listFiles(new FileFileterByDir());
//遍历获取到的所有符合条件的文件
for (File f : files) {
System.out.println(f);
}
}
}
//文件过滤器
class FileFileterByDir implements FileFilter{
public boolean accept(File pathname) {
return pathname.isDirectory();
}
}
获取所有子目录中的内容:
public class FileDemo2 {
public static void main(String[] args) {
File file = new File("d:\\test");
getFileAll(file);
}
//获取指定目录以及子目录中的所有的文件
public static void getFileAll(File file) {
File[] files = file.listFiles();
//遍历当前目录下的所有文件和文件夹
for (File f : files) {
//判断当前遍历到的是否为目录
if(f.isDirectory()){
//是目录,继续获取这个目录下的所有文件和文件夹
getFileAll(f);
}else{
//不是目录,说明当前f就是文件,那么就打印出来
System.out.println(f);
}
}
}
}
这里面使用了递归的思想
版权声明:本文为qq_43310689原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。