Tôi đã cố gắng để sử dụng tính năng globbing mới trong JDK7, bắt đầu từ the documentation and examplesLàm thế nào để sử dụng thư mục globbing trong JDK7
tôi có thể nhận được những đống như "glob:*.dat"
để làm việc với các ví dụ
Files.walkFileTree(startingDir, finder);
nhưng tôi không thể nhận cú pháp "**"
. Tôi muốn có thể tạo một cái gì đó như:
matcher = FileSystems.getDefault().getPathMatcher("glob:" + "foo/**/bar/*.dat");
và sẽ biết ơn ví dụ đơn giản. Tôi đang sử dụng Windows 7.
CẬP NHẬT: @Oleg và @JBNizet làm rõ rằng cú pháp "/" là không phụ thuộc vào hệ điều hành. Lưu ý rằng Javadocs gợi ý rằng cú pháp OS phụ thuộc cũng có thể
VẪN VẤN ĐỀ (theo yêu cầu?): đã lấy @Nizet và chỉnh sửa như sau:
@Test
public void testStackoverflowGlobber() throws IOException {
final PathMatcher matcher =
FileSystems.getDefault().getPathMatcher("glob:*.cml");
Files.walkFileTree(Paths.get("d:/petermr-workspace/jumbo-converters/jumbo-converters-cli/src/test/resources"), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println("try>> "+file);
if (matcher.matches(file)) {
System.out.println("MATCHES>>"+file);
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
return FileVisitResult.CONTINUE;
}
});
}
và điều này mang lại cho sản lượng như:
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.cdx
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.cdxml
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.cml
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.ref.cdxml
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.ref.cml
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cif\aa2004.cml
nhưng không có bằng chứng về sự phù hợp với
'/' sẽ hoạt động tốt trên bất kỳ hệ thống Windows nào nếu đó là mối quan tâm của bạn –
@Xin cảm ơn. Vì vậy, tôi đã có một số logic sai hoặc giả định các phương pháp có chức năng khác nhau. File.separator do đó sai? [Tôi tìm thấy tài liệu chính thức khá sơ sài] –
bạn đã thử "glob: **/*. Cml" chưa? –