Java - File listFiles() 方法



描述

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

声明

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

public File[] listFiles(FilenameFilter filter)

参数

filter − 文件名过滤器

返回值

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

异常

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

示例 1

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

package com.tutorialspoint;
import java.io.File;
import java.io.FilenameFilter;
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
         FilenameFilter 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 FilenameFilter{

   @Override
   public boolean accept(File dir, String name) {
      return name.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.FilenameFilter;
public class FileDemo {
   public static void main(String[] args) {      
      File f = null;
      File[] paths;
      try {    

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

         FilenameFilter 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 FilenameFilter{
   @Override
   public boolean accept(File dir, String name) {
      return name.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.FilenameFilter;
public class FileDemo {
   public static void main(String[] args) {      
      File f = null;
      File[] paths;

      try {    

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

         FilenameFilter 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 FilenameFilter{
   @Override
   public boolean accept(File dir, String name) {
      return name.endsWith(".txt");
   }	
}

输出

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

Files are not present
java_file_class.htm
广告