Java - File listFiles() 方法



描述

Java File listFiles(FileFilter filter) 方法返回一个抽象路径名数组,这些路径名指示由该抽象路径名指示的目录中满足指定过滤器的文件和目录。

声明

以下是 java.io.File.listFiles(FileFilter filter) 方法的声明:

public File[] listFiles(FileFilter filter)

参数

filter - 文件过滤器

返回值

该方法返回一个抽象路径名数组,这些路径名指示由该抽象路径名指示的目录中满足指定过滤器的文件和目录。

异常

SecurityException - 如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒绝读取文件的访问权限

示例 1

以下示例显示了 Java File listFiles(filter) 方法的使用。我们通过实现 FileFilter 类创建了一个过滤器类。此类正在实现 accept 方法,如果文件名以“txt”结尾则返回 true。我们将在程序中使用此类来过滤文本文件。我们创建了一个 File 引用。然后,我们使用提供的目录中存在的 test 目录创建一个 File 对象。然后,我们使用 list(filter) 方法获取 test 目录中存在的文本文件列表到字符串数组中。然后迭代此数组以打印给定目录中可用的文件。

package com.tutorialspoint;
import java.io.File;
import java.io.FileFilter;
public class FileDemo {
   public static void main(String[] args) {      
      File f = null;
      File[] paths;

      try {    

         // create new file
         f = new File("F:/Test2");

         // create new filter
         FileFilter filter = new TextFileFilter();

         // array of files and directory
         paths = f.listFiles(filter);

         if(paths != null) {
            // for each name in the path array
            for(File path:paths) {

               // prints filename and directory name
               System.out.println(path.getName());
            }
         }else {
             System.out.println("Files are not present");
         }
      } catch(Exception e) {
         // if any error occurs
         e.printStackTrace();
      }
   }
}

class TextFileFilter implements FileFilter{

   @Override
   public boolean accept(File pathname) {
      return pathname.getName().endsWith(".txt");
   }	
}

输出

让我们编译并运行上述程序,这将产生以下结果:

test.txt
Test1.txt

示例 2

以下示例显示了 Java File listFiles(filter) 方法的使用。我们创建了一个 File 引用。然后,我们使用提供的目录中存在的 test 目录创建一个 File 对象。然后,我们使用 listFiles(filter) 方法获取 test 目录中所有存在的文件列表到 File 数组中。我们传递 filter 为 null,以便所有文件都包含在内。然后迭代此数组以打印给定目录中可用的文件。

package com.tutorialspoint;
import java.io.File;
import java.io.FileFilter;
public class FileDemo {
   public static void main(String[] args) {      
      File f = null;
      File[] paths;

      try {    

         // create new file
         f = new File("F:/Test2");

         FileFilter filter = null;

         // array of files and directory
         paths = f.listFiles(filter);

         if(paths != null) {
            // for each name in the path array
            for(File path:paths) {

               // prints filename and directory name
               System.out.println(path.getName());
            }
         }else {
             System.out.println("Files are not present");
         }
      } catch(Exception e) {
         // if any error occurs
         e.printStackTrace();
      }
   }
}

class TextFileFilter implements FileFilter{

   @Override
   public boolean accept(File pathname) {
      return pathname.getName().endsWith(".txt");
   }	
}

输出

让我们编译并运行上述程序,这将产生以下结果:

test.pptx
test.txt
Test1.txt

示例 3

以下示例显示了 Java File listFiles(filter) 方法的使用。我们创建了一个 File 引用。然后,我们使用提供的目录中不存在的 test3 目录创建一个 File 对象。然后,我们使用 listFiles() 方法获取 test 目录中存在的文件列表到 File 数组中。然后迭代此数组以打印给定目录中可用的文件。由于文件夹不存在,数组将为 null,并且我们打印一条消息 -“文件不存在”。

package com.tutorialspoint;
import java.io.File;
import java.io.FileFilter;
public class FileDemo {
   public static void main(String[] args) {      
      File f = null;
      File[] paths;

      try {    

         // create new file
         f = new File("F:/Test3");

         FileFilter filter = null;

         // array of files and directory
         paths = f.listFiles(filter);

         if(paths != null) {
            // for each name in the path array
            for(File path:paths) {

               // prints filename and directory name
               System.out.println(path.getName());
            }
         }else {
             System.out.println("Files are not present");
         }
      } catch(Exception e) {
         // if any error occurs
         e.printStackTrace();
      }
   }
}
class TextFileFilter implements FileFilter{
   @Override
   public boolean accept(File pathname) {
      return pathname.getName().endsWith(".txt");
   }	
}

输出

让我们编译并运行上述程序,这将产生以下结果:

Files are not present
java_file_class.htm
广告