jjzjj

watchService

全部标签

Java 7 NIO watchservice 与 jpathwatch

我工作的项目一直在使用Java6和jpathwatch(.95),现在正在升级到Java7。目前在Windows7和2008Server上。我正在重构代码区域以使用新的Java7NIO并且相对简单-甚至使用NIO.2替换jpathwatch。但是,我们代码的文件监视区域开始无法通过单元测试。似乎Java7NIO不会接收到其他机器的UNC路径的变化-\\otherMach\path\to\watch.为了测试,我实现了来自JavaNIO教程网站的代码http://docs.oracle.com/javase/tutorial/essential/io/fileio.html然后在jpat

用于多个目录的 Java nio WatchService

我想使用JavaNIO查看(监控)多个目录WatchService.我的问题是要监视的目录数量是动态的,用户可以将任意数量的目录添加到WatchService。这可以实现吗? 最佳答案 可以使用相同的WatchService注册多个路径。每条路径都有自己的WatchKey。take()或poll()将返回与修改后的路径对应的WatchKey。参见Java'sWatchDirexample了解详情。 关于用于多个目录的JavanioWatchService,我们在StackOverflow

java - 在自己的线程中运行的 Spring Bean

在我的Web应用程序中,我尝试使用JavaSDK7WatchService创建一个目录轮询bean。我想要实现的是在它自己的线程中运行这个bean,这样它就不会阻塞应用程序。像这样的东西: 最佳答案 恐怕您将不得不使用Spring手动创建此线程:WatchServiceRunnableWrapper很简单:publicclassWatchServiceRunnableWrapperimplementsRunnable{privateWatchServiceWatchService;publicWatchServiceRunnable

Java 7 WatchService - 该进程无法访问该文件,因为它正被另一个进程使用

我关注了WatchingaDirectory更改Java7nio2教程以使用代码示例WatchDir.java递归监视目录的全部内容。代码如下://Getlistofeventsforthewatchkey.for(WatchEventevent:key.pollEvents()){//ThiskeyisregisteredonlyforENTRY_CREATEevents,butanOVERFLOWevent//canoccurregardlessifeventsarelostordiscarded.if(event.kind()==OVERFLOW){continue;}//Con

Java I/O : Ensure a file is not locked by another process before any r/w operation

我在基于Java7WatchServiceAPI跟踪目录中文件内容的应用程序中遇到了一个反复出现的问题。当底层文件系统触发文件修改事件时,我想立即计算其SHA-256。但经常会发生另一个进程打开文件(即Word),从而保留独占锁并阻止我的应用程序进行任何读/写操作。如果针对打开的文件创建了任何流/channel,则会抛出FileNotFoundException或nioAPI的FileSystemException以及如下消息:Theprocesscannotaccessthefilebecauseitisbeingusedbyanotherprocess当文件在fs上实际上不存在时,

java - 如何使用 WatchService 监视子目录的变化? ( java )

我想观察一些目录的变化和她的子目录。我试着用WatchService来做到这一点但我不知道文件是从哪个目录更改的。如何从WatchEvent检索完整路径? 最佳答案 通常您在启动监视服务时提供文件的目录名称。这是一个演示其工作原理的教程:http://blogs.oracle.com/thejavatutorials/entry/watching_a_directory_for_changes来自教程:Pathdir=...;try{WatchKeykey=dir.register(watcher,ENTRY_CREATE,ENTR

Java7 WatchService - 如何检测实际监视目录的重命名/移动

我正在使用WatchService用于与应用程序工作台同步数据文件。当我重命名/移动监视目录时,我没有收到任何事件,WatchKey也不会变得无效。我仍然从重命名的目录中获取事件,但据我所知,除了WatchKey.watchable()之外,没有办法找出WatchKey的实际路径。然而,它仍然返回原始目录路径。我想避免锁定监视目录以防止更改,因为我想使应用程序尽可能轻量级。我在Windows7上使用JDK7u10时遇到过这个问题您是否知道在不锁定目录或查看所有目录到根目录的情况下解决此问题的任何解决方法?更新在Linux上我观察到了相同的行为。到目前为止,我现在似乎有三个选择。1)依靠

java - 有没有办法使用 WatchService 进行强制轮询?

我有使用WatchService监听目录并响应我指定的事件的工作代码。这工作正常并且已经在linux和mac上进行了测试(尽管在后者上很明显使用了轮询)。但是,当我在生产环境中部署它时,发现被监控的目录是一个NFS挂载。由于WatchService在linux上运行时使用inotify,因此从来没有触发任何事件,因为NFS挂载不会触发inotify事件(或类似的东西,这里有更多信息,这解释了我的问题:JavaWatchServicenotgeneratingeventswhilewatchingmappeddrives)。因为我的代码已经写好,所以我更愿意强制WatchService使

Java WatchService 在观看映射驱动器时不生成事件

我实现了一个文件观察器,但我注意到javanio文件观察器不会为在映射驱动器上复制的文件生成事件。例如,我在Unix上运行文件观察器来观察映射到windows(H:\)上的本地目录(/sharedfolder),然后我已在此目录(H:\)中放置了一个文件,但文件观察程序没有生成任何事件。现在,如果我在Windows上运行文件观察器来观察映射驱动器(H:\),它指的是unix路径(/sharedfolder),然后我从unix放置一个文件在此文件夹中,文件观察程序识别更改并生成事件。它看起来像一个错误,或者我可能遗漏了一些东西,有什么想法吗? 最佳答案

Java WatchService 在观看映射驱动器时不生成事件

我实现了一个文件观察器,但我注意到javanio文件观察器不会为在映射驱动器上复制的文件生成事件。例如,我在Unix上运行文件观察器来观察映射到windows(H:\)上的本地目录(/sharedfolder),然后我已在此目录(H:\)中放置了一个文件,但文件观察程序没有生成任何事件。现在,如果我在Windows上运行文件观察器来观察映射驱动器(H:\),它指的是unix路径(/sharedfolder),然后我从unix放置一个文件在此文件夹中,文件观察程序识别更改并生成事件。它看起来像一个错误,或者我可能遗漏了一些东西,有什么想法吗? 最佳答案