Phương thức listFiles() trả về mảng chứa object (đường dẫn trừu tượng) của tất cả file và thư mục trong path của object File hiện tại.
Interface FileFilter là bộ lọc tên đường dẫn, có thể truyền làm tham số cho listFiles(). Phương thức này lọc tên file dựa trên filter truyền vào.
Để lấy thư mục ẩn: implement FileFilter chỉ chấp nhận thư mục ẩn, truyền vào listFiles().
Ví dụ 1 - Dùng FileFilter
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
public class Test {
public static void main(String args[]) throws IOException {
File directoryPath = new File("D:\\ExampleDirectory");
FileFilter fileFilter = new FileFilter() {
public boolean accept(File dir) {
if (dir.isDirectory() && dir.isHidden()) {
return true;
} else {
return false;
}
}
};
File[] list = directoryPath.listFiles(fileFilter);
System.out.println("List of the jpeg files in the specified directory:");
for (File fileName : list) {
System.out.println(fileName.getName());
System.out.println(fileName);
}
}
}
Đầu ra
List of the jpeg files in the specified directory: hidden directory1 D:\ExampleDirectory\hidden directory1 hidden directory2 D:\ExampleDirectory\hidden directory2
Ví dụ 2 - Dùng Files.isHidden() và Stream
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.stream.Stream;
public class Demo {
public static void main(String[] args) throws IOException {
File dir = new File("D:\\ExampleDirectory");
File[] files = dir.listFiles(File::isHidden);
Stream<File> fileStream = Arrays.stream(files);
fileStream.forEach(file -> System.out.println(file.getName()));
}
}
Đầu ra
D:\ExampleDirectory\hidden directory1 D:\ExampleDirectory\hidden directory2