Trước Java 8, các bạn có thể sử dụng phương thức listFiles() của class File với tham số là thư mục mà chúng ta muốn lấy danh sách tập tin, thư mục để làm điều này. Ví dụ như:
1 |
File[] files = new File("/Users/khanh/Documents/code/huongdanjava.com").listFiles(); |
Kết quả trả về sẽ là danh sách các đối tượng File chứa thông tin các tập tin, thư mục trong thư mục mà chúng ta muốn lấy danh sách. Các bạn có thể in thông tin các tập tin này như sau:
1 2 3 |
for (File f: files) { System.out.println(f.getName()); } |
Kết quả:
Các bạn cũng có thể lọc ra danh sách tập tin và thư mục nếu muốn nhé!
Một class khác của Java mà các bạn cũng có thể sử dụng để lấy danh sách tập tin, thư mục là DirectoryStream.
Nhưng đầu tiên, các bạn cần đối tượng Path chứa thông tin thư mục các bạn cần lấy danh sách trước:
1 2 |
String folder = "/Users/khanh/Documents/code/huongdanjava.com"; Path folderPath = Paths.get(folder); |
sau đó thì sử dụng class DirectoryStream như sau:
1 2 3 4 |
DirectoryStream<Path> ds = Files.newDirectoryStream(folderPath); for (Path path: ds) { System.out.println(path.getFileName()); } |
Kết quả:
Từ Java 8 trở đi, các bạn có thể sử dụng phương thức static list() của class Files để làm việc này, cụ thể như sau:
1 2 3 4 5 6 7 8 |
String folder = "/Users/khanh/Documents/code/huongdanjava.com"; Path folderPath = Paths.get(folder); Files.list(folderPath) .map(Path::getFileName) .collect(Collectors.toList()) .stream() .forEach(System.out::println); |
Đối tượng trả về của phương thức list() là một đối tượng Stream. Các bạn có thể lấy danh sách tên sau đó collect vào một List, rồi thì foreach List này để in ra file name như mình đang làm!
Kết quả cũng tương tự như trên: