java - 如何判断文件何时将 "Done"复制到监视目录中?

标签 java file path

我正在使用 WatchService用于监视目录并获取 ENTRY_CREATE 的 API用户开始将文件复制到目录中时的事件。不过,我正在使用的文件可能很大,我想知道副本何时完成。是否有任何内置的 java API 可以用来完成此操作,还是我最好只跟踪创建的文件的大小并在大小停止增长时开始处理?

编辑:这是我的示例代码:

package com.example;

import java.io.File;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.StandardWatchEventKinds;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;

public class Monitor {
    public static void main(String[] args) {
        try {
            String path = args[0];

            System.out.println(String.format( "Monitoring %s", path  ));
            WatchService watcher = FileSystems.getDefault().newWatchService();
            Path watchPath = FileSystems.getDefault().getPath(path);

            watchPath.register(watcher, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_MODIFY);

            while (true) {
                WatchKey key = watcher.take();
                for (WatchEvent<?> event: key.pollEvents()) {
                    Object context = event.context();
                    System.out.println( String.format( "Event %s, type %s", context, event.kind() ));

                }
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

产生这个输出:

Monitoring /Users/ericcobb/Develop/watch
Event .DS_Store, type ENTRY_MODIFY
Event 7795dab5-71b1-4b78-952f-7e15a2f39801-84f3e5daeca9435aa886fbebf7f8bd61_4.mp4, type ENTRY_CREATE

最佳答案

创建条目时,您将收到 ENTRY_CREATE 事件。对于每个后续修改,您将获得 ENTRY_MODIFY事件。复制完成后,您将收到 ENTRY_MODIFY 通知。

关于java - 如何判断文件何时将 "Done"复制到监视目录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17933557/

相关文章:

algorithm - 优化/简化路径

reactjs - 在 Gatsby 中添加 PDF 文件

java - 完全合格的路径Vs。规范路径

java - XML 验证似乎忽略了一些 XSD 元素

java - Spring Data Rest 按关键字搜索

java - 使用 getResourceAsStream 从 JAR 或文件系统加载资源

r - 使用 R 和管道工加载文件

python - A* python 麻烦,目标永远找不到

Java "get{Object}"方法命名约定

java - 如何从 JAXB 创建自定义编码输出?