当前位置:  开发笔记 > 编程语言 > 正文

在写入文件之前触发了Java 7 Watch Service ENTRY_CREATE

如何解决《在写入文件之前触发了Java7WatchServiceENTRY_CREATE》经验,为你挑选了1个好方法。

我有一个观看目录的观看服务.创建文件后,我正在处理目录并更新树视图.

这正常的ENTRY_DELETE,但有时(并不总是)时WatchEventENTRY_CREATE情况发生时,该文件还没有被写入到磁盘.

我通过创建new File()监视服务注册的目录以及文件的路径并检查exists()方法来确认这一点,因此操作系统似乎在实际创建文件之前触发create事件.

这个问题似乎是同一个问题,但从文件夹的角度来看.

我可以解决这个问题吗?



1> TT...:

创建文件时会触发该事件.在写入文件之前,需要先创建该文件.文件一旦完全写入就不会出现,一旦创建就会出现.

一旦你得到了创作活动,你能做的就是:

创建一个File对象以指向该文件

使用带模式的RandomAccessFile创建一个java.nio.channels.FileChannel用于随机访问(所以读写访问)rw

锁定频道.这将阻塞,直到文件可以进行读/写访问(有关更多信息,请阅读更常用的Lock方法)

获取锁定后,文件由写入文件的进程释放

一个简化的例子:

File lockFile = new File( "file_to_lock" );
FileChannel channel = new RandomAccessFile( lockFile, "rw" ).getChannel( );
channel.lock( );

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有