2015-05-06 13 views
9

Tôi muốn tìm tệp trong thư mục bằng ký tự đại diện. Tôi có điều này trong Java 6 nhưng muốn chuyển đổi mã Java 7 nio:Thư mục danh sách Java 7 nio với ký tự đại diện

File dir = new File(mydir); 
FileFilter fileFilter = new WildcardFileFilter(identifier+".*"); 
File[] files = dir.listFiles(fileFilter); 

Không có WildcardFileFilter, và tôi đã chơi xung quanh một chút với những đống.

+1

Có bạn đọc [Tìm tệp] (https://docs.oracle.com/javase/tutorial/essential/io/find.html)? –

+0

Xem http://stackoverflow.com/questions/20443793/allow-wildcards-to-search-for-subdirectories-from-a-parent-directory. Nó sẽ giúp bạn xây dựng mã đúng cho điều đó. – wsl

Trả lời

9

Bạn có thể vượt qua một glob đến một DirectoryStream

import java.nio.file.DirectoryStream; 
import java.nio.file.FileSystems; 
import java.nio.file.Files; 
import java.nio.file.Path; 
... 

Path dir = FileSystems.getDefault().getPath(filePath); 
DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.{txt,doc,pdf,ppt}"); 
for (Path path : stream) { 
    System.out.println(path.getFileName()); 
} 
stream.close(); 
+1

Tôi nghĩ bạn cần một dàn diễn viên không? cho (Đường dẫn đường dẫn: (Đường dẫn) luồng) { – Jabda

+1

@Jabda, bạn nói đúng. Điều này hiện đã được sửa (DIrectoryStream ... đã thêm). – RealHowTo

4

Bạn có thể sử dụng một directory stream với một glob như:

DirectoryStream<Path> stream = Files.newDirectoryStream(dir, identifier+".*") 

và sau đó lặp lại các đường dẫn tập tin:

for (Path entry: stream) { 
} 
Các vấn đề liên quan