خرید بک لینک
برای پیدا# کردن# فایل# باز هم از کلاس SimpleFileVisitor و متد walkFileTree مربوط به کلاس Files استفاده می کنیم. به این صورت که یک کلاس به اسم FileFinder از SimpleFileVisitor مشتق می کنیم.

class FileFinder extends SimpleFileVisitor {

در این کلاس یک شی از PathMatcher تعریف می کنیم:

private PathMatcher matcher;

و یک ArrayList برای نگهداری فهرست فایل# های پیدا# شده:

public ArrayList foundPaths = new 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);

برچسب: نویسنده: پارسا کاظمیان تاريخ: يکشنبه 25 فروردين 1398 ساعت: 22:35

صفحه بندی