遍历目录
通过遍历目录可以在指定的目录中查找文件,或者显示所有的文件列表。
1.File 类的 list()
File 类的 list() 方法提供了遍历目录功能,该方法有如下两种重载形式。
- String[] list()
该方法表示返回由 File 对象表示目录中所有文件和子目录名称组成的字符串数组,如果调用的 File 对象不是目录,则返回 null。
提示
:list() 方法返回的数组中仅包含文件名称,而不包含路径。但不保证所得数组中的相同字符串将以特定顺序出现,特别是不保证它们按字母顺序出现。 - String[] list(FilenameFilter filter)
该方法的作用与 list() 方法相同,不同的是返回数组中仅包含符合 filter 过滤器的文件和目录,如果 filter 为 null,则接受所有名称。
public class readbyte {
public static void main(String[] args) {
File folder = new File("./target");
String fileList[] = folder.list();
for (int i = 0; i < fileList.length; i++) { // 遍历返回的字符数组
System.out.println(fileList[i]);
}
}
输出
2. File类的listFiles()
listFiles()方法是File类的一部分。如果路径名是目录,则该函数返回一个File数组,表示给定抽象路径名中的文件,否则返回null。该函数是重载函数。其中一个函数没有任何参数,第二个函数将FilenameFilter对象作为参数,第三个函数将FileFilter对象作为参数
函数签名:
public File[] listFiles()
public File[] listFiles(FilenameFilter f)
public File[] listFiles(FileFilter f)
函数语法:
file.listFiles()
file.listFiles(filter)
参数:该函数是重载函数
该函数之一没有任何参数,
第二个函数将FilenameFilter对象作为参数,
第三个函数将FileFilter对象作为参数
返回值:该函数返回一个File数组,如果文件对象是一个文件,则返回null值。
异常:如果不允许该函数对该文件进行读取访问,则此方法将引发Security Exception
下面的程序将说明listFiles()函数的用法
- 例1
查找给定目录中的所有文件和目录
import java.io.File;
public class readbyte {
static String dirpath = "./test.txt";
public static void main(String[] args) {
File folder = new File("./target");
File[] listOfFiles = folder.listFiles();
// Display the names of the files
for (File f : listOfFiles) {
String fileName = f.getName();
System.out.println(fileName);
}
//这种方法也可以
for (int i = 0; i < listOfFiles.length; i++) {
System.out.println(listOfFiles[i].getName());
}
}
}
String getName()
返回表示当前对象的文件名或路径名(如果是路径,则返回最后一级子路径名)
输出
- 例2
在给定目录中查找名称以“ (0,5)”开头的所有文件
import java.io.File;
import java.io.FilenameFilter;
public class readbyte {
public static void main(String[] args) {
File folder = new File("./target");
// Create a FilenameFilter
FilenameFilter filter = new FilenameFilter() {
public boolean accept(File f, String name)
{
return name.startsWith("(0,5)");
}
};
File[] listOfFiles = folder.listFiles(filter);
System.out.println("Files are:");
// Display the names of the files
for (File f : listOfFiles) {
String fileName = f.getName();
System.out.println(fileName);
}
}
}
输出
- 例3
查找给定目录中的所有文件和目录,它们都是文本文件。
import java.io.File;
import java.io.FileFilter;
public class readbyte {
public static void main(String[] args) {
File folder = new File("./target");
// Create a FileFilter
FileFilter filter = new FileFilter() {
public boolean accept(File f)
{
return f.getName().endsWith("txt");
}
};
// Get all the names of the files present
// in the given directory
// which are text files
File[] listOfFiles = folder.listFiles(filter);
System.out.println("Files are:");
// Display the names of the files
for (File f : listOfFiles) {
String fileName = f.getName();
System.out.println(fileName);
}
}
}
输出