Java Files.list 教程显示了如何使用Files.list
列出 Java 中的文件。
Files.list
返回目录元素的延迟填充流。 该列表不是递归的。
流的元素是Path
对象。
Files.list
当前目录
第一个示例列出了当前目录。
FilesListEx.java
package com.zetcode;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class FilesListEx {
public static void main(String[] args) throws IOException {
Files.list(Paths.get("."))
.forEach(path -> System.out.println(path));
}
}
点号代表当前的工作目录。 我们使用Paths.get()
获得路径对象。
Files.list
目录
以下示例列出了用户主目录中的目录。
FilesListEx2.java
package com.zetcode;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
public class FilesListEx2 {
public static void main(String[] args) throws IOException {
var homeDir = System.getProperty("user.home");
Files.list(new File(homeDir).toPath())
.filter(path -> path.toFile().isDirectory())
.forEach(System.out::println);
}
}
我们使用toFile()
将路径对象转换为File
并调用isDirectory()
方法。 用filter()
过滤流。
Files.list
按文件扩展名
下一个程序列出了所有 PDF 文件。
FilesListEx3.java
package com.zetcode;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class FilesListEx3 {
public static void main(String[] args) throws IOException {
var homeDir = System.getProperty("user.home")
+ System.getProperty("file.separator") + "Downloads";
Files.list(Paths.get(homeDir)).filter(path -> path.toString().endsWith(".pdf"))
.forEach(System.out::println);
}
}
该程序将在 Downloads 目录中列出 PDF 文件。 路径对象被转换为字符串,我们在字符串上调用endsWith()
以检查其是否以pdf
扩展名结尾。
Files.list
计数文件
我们计算 PDF 文件的数量。
FilesListEx4.java
package com.zetcode;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class FilesListEx4 {
public static void main(String[] args) throws IOException {
var homeDir = System.getProperty("user.home")
+ System.getProperty("file.separator") + "Downloads";
var nOfPdfFiles = Files.list(Paths.get(homeDir)).filter(path -> path.toString()
.endsWith(".pdf")).count();
System.out.printf("There are %d PDF files", nOfPdfFiles);
}
}
文件数由count()
确定。
在本教程中,我们使用Files.list
列出目录内容。