0

Мне интересно, есть ли способ улучшить приведенный ниже код и не только совместить, но и удалить все файлы и каталоги, содержащие символ «e» от их имени. Любая помощь приветствуется!Как удалить все файлы на основе определенного символа в именах файлов, используя Java

Заранее спасибо.

Вот код:

import java.io.*; 
import java.nio.file.*; 
import java.nio.file.attribute.BasicFileAttributes; 

class Finder extends SimpleFileVisitor<Path> { 
    private final PathMatcher matcher; 
    Finder() { 
     matcher = FileSystems.getDefault().getPathMatcher("glob:*e*"); 
    } 

    //@Override 
    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { 
     find(file); 
     return FileVisitResult.CONTINUE; 
    } 

    //@Override 
    public FileVisitResult preVisitDirectory(Path file, BasicFileAttributes attrs) { 
     find(file); 
     return FileVisitResult.CONTINUE; 
    } 

    void find(Path file) { 
     Path name = file.getFileName(); 
     if(matcher.matches(name)) { 
      System.out.println("Matched file: " + file.getFileName()); 
     } 
    } 
} 

public class FileVisitor2 { 
    public static void main(String[] args) throws IOException { 
     Finder finder = new Finder(); 
     Path p = Paths.get("C:\\Users\\El\\School\\DirMain"); 
     Files.walkFileTree(p, finder); 
    } 
} 
+0

Как о получении файлов в качестве строки и использовать 'содержит (String ключевое слово)', чтобы обнаружить файлы, которые содержат ключевое слово и держать их в список строк и немедленно удалить список? –

+0

Что делать, если имя каталога соответствует вашим критериям. Должно ли оно быть рекурсивно удалено? – SubOptimal

+0

@SubOptimal, если каталог или имя файла соответствуют критериям, то есть они содержат «e» в их имени, их следует удалить/удалить. –

ответ

0

Вы можете использовать Apache Commons библиотеки org.apache.commons.io.FileUtils удалить файлы/директории, как это FileUtils.deleteQuitely() позволяет удалить непустой каталоги, как Что ж.

FileUtils.deleteQuietly(new File(path.toUri())); 

что-то, как показано ниже:

void find(Path file) { 
    Path name = file.getFileName(); 
    if(matcher.matches(name)) { 
     System.out.println("Matched file: " + file.getFileName()); 
     FileUtils.deleteQuietly(new File(file.toUri())); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^