有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中的文件子目录和主目录监视

我的程序正在监视指定文件路径中的任何文件更改,如果有任何新文件出现,它将发出通知,但当父文件夹中创建了任何子文件夹时,它将失败。父文件夹的文件路径正在监视C:/play,但是当父文件夹中有一个像C:/play/abc这样创建的新子文件夹时,我的程序能够检测到,但是当我试图将任何文件插入abc文件夹时,我的程序无法检测到新文件已经创建。我已经测试了various methods,但不幸的是我不能让它工作。有人能给我提供参考链接的指导吗?我的示例代码遵循参考链接中的指南

这是我加入子目录检查功能后的源代码

public class fileStatus 
{
    public static void main(String [] args) throws InterruptedException
    {
    try(WatchService svc = FileSystems.getDefault().newWatchService()) 
    {
        Map<WatchKey, Path> keyMap = new HashMap<>();
        Path path = Paths.get("C:/play");
        fileStatus fd = new fileStatus();
        fd.registerAll(path);
        keyMap.put(path.register(svc,
            StandardWatchEventKinds.ENTRY_CREATE),
            path);
        WatchKey wk ;
       do 
       {
            wk = svc.take();
            Path dir = keyMap.get(wk);
            for(WatchEvent<?> event : wk.pollEvents())
            {
                WatchEvent.Kind<?> type = event.kind();
                Path fileName = (Path)event.context();
                System.out.println("\nThe new file :"+fileName+ "Event :" +type);  //print the new file name 
            }
       }while(wk.reset());
 }
catch(IOException e)
{
        System.out.println("Problem io  in somewhere");
}

}

     private void registerAll(Path path) throws IOException
    {
        Files.walkFileTree(path, new SimpleFileVisitor<Path>()
                {
                  @SuppressWarnings("unused")
                public FileVisitResult preVisitDireotry(Path path,BasicFileAttributes attrs) throws IOException
                  {
                      return FileVisitResult.CONTINUE;
                  }
                });

    } 
}



This是我的参考代码,我的文件夹结构如下所示,

/root
  /Folder A 
    /test.txt 
  /Folder B 
    /abc.txt

共 (0) 个答案