Hi all, 想请问大家都怎么侦测大档案copy完成了呢?
使用情境是:
user丢大型档案到指定资料夹 > 抓到这个事件 > 做其他事情
问题点:
现在卡在"抓到这个事件"有点不太好处理, 想请各位版友分享类似经验
已尝试方法:
1) 透过 nio 的 WatchService
这个方法基本上就是google的第一种解法, 透过 nio 的 WatchService,
注册 ENTRY_MODIFY/ENTRY_CREATE 可侦测到档案有变动or新增
但无法无法知道何时copy完成
2) 在 nio 的 WatchService 判断
天真如我, 在每次 ENTRY_MODIFY 事件发生时, 将 Path 转为 File,
判断档案是否可用
File f = path.toFile();
if(f.canWrite()){ ... }
会用 canWrite() 判断是因为有爬到说在copy时档案不能编辑
这个方法我一直觉得可能是我哪边写错了, 因为我觉得应该要可以 Orz
3) 定时爬一次资料夹
这是土炮, 也是唯一成功的一种...
for(;;){ ...; Thread.sleep(5000); }
不想用这种方法的原因是, 类似的回答在 stackoverflow 被推到 -1x
也有人点出效能的问题
以上是我尝试过的几种方式, 不知道有没有其他我没想过的做法可以提供参考
跪谢