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

如何获取文件名作为字符串,并使用'包含(字符串关键字)'检测到含有关键字,并让他们在一个字符串列表中的文件和立即删除列表? –

+0

如果目录名称符合您的条件,该怎么办。是否应该递归删除? – SubOptimal

+0

@SubOptimal如果目录或文件名称符合条件,即它们的名称中包含“e”,则应将其删除/删除。 –

回答

0

你可以使用Apache的百科全书库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())); 
    } 
} 
相关问题