class FileFinder extends SimpleFileVisitor
در این کلاس یک شی از PathMatcher تعریف می کنیم:
private PathMatcher matcher;
و یک ArrayList برای نگهداری فهرست فایل# های پیدا# شده:
public ArrayList
این فهرست رو از نوع public تعریف می کنیم تا از کلاس های دیگه هم قابل دیدن باشن.
توی سازنده یک رشته-الگو به عنوان ورودی دریافت می کنیم و متد getPathMatcher رو روی متدی getDefault از کلاس FileSystems صدا میزنیم و نام فایل رو که به صورت الگو هست رو به همراه عبارت "glob:" که مشابه regex هست (منتهی مناسب نام فایل هاست) بهش میدیم.
public FileFinder(String namePattern) {
matcher = FileSystems.getDefautl().getPathMatcher("glob:" namePattern);
}
توی متد visitFile مربوط به این کلاس که البته override هست تطابق رو بررسی می کنیم و در صورت مطابقت به فهرست اضافه می کنیم. به این صورت:
public FileVisitResult visitFile(Path file, BasicAttributes attrs) throws IOException {
Path name = file.getFileName();
if(matcher.matches(name)) {
foundPaths.add(file);
}
}
حالا توی فایل اصلی توی متد main اول مسیر مورد نظر رو مشخص میکنیم.
Path dir = Paths.get("dirs");
حالا یک شی از کلاسی که ساختیم می سازیم و یک نام فایل به عنوان الگو بهش میدیم. میتونیم تو این الگو از علامت ستاره * استفاده کنیم که یعنی هر چیزی به هر تعد
FileFinder finder = new FileFinder(dir);
برچسب:
نویسنده: پارسا کاظمیان