我编写了一个程序,可以监视文件夹并让我知道这些文件夹中的更改。但这应该整天运行,直到系统打开。这应该作为后台任务运行(如批处理)。
我正在使用 Java WatchService 来监视文件夹。
我需要一些建议,
- 如何使它成为作为批处理在后台运行的服务?
- 如果我把它作为服务,这会影响系统的性能吗?因为文件夹中至少每 5 分钟会添加一次文件。
请提出你的想法。
谢谢
我编写了一个程序,可以监视文件夹并让我知道这些文件夹中的更改。但这应该整天运行,直到系统打开。这应该作为后台任务运行(如批处理)。
我正在使用 Java WatchService 来监视文件夹。
我需要一些建议,
请提出你的想法。
谢谢
当您的系统有足够的资源时,您可以并且它不应该影响您的系统性能。
在java中执行此操作的步骤
FolderMonitor
来监视特定文件夹。
File("C:\folder1")
Map
映射键中,可以是 foderName+fileName,值是修改时间。ScheduledExecutorService
以所需的时间间隔运行上述程序FolderMonitor
把课堂变成罐子。让它服务
apache's procrun
或tanukisoftware
服务包装器从 java 可执行 jar 创建服务
希望你能做到。祝一切顺利
Q> 如何将其作为一个服务在后台作为批处理运行?
A> 看到这个SO 帖子,它解决了同样的问题。
Q> 如果我把它作为服务,这会影响系统的性能吗?因为文件夹中至少每 5 分钟会添加一次文件。
A> 因为你正在使用WatchService
,这应该是非常便宜的。引用文档:
大多数文件系统实现都对文件更改通知提供本机支持。Watch Service API 在可用的情况下利用此支持。但是,当文件系统不支持这种机制时,Watch Service 会轮询文件系统,等待事件。
如果有疑问,您可以随时监控您的服务器并查看您的应用程序使用了多少 CPU 和 I/O。我敢打赌这不会很多。
制作一个无限循环的线程,比如
while(true) {
//code and logic
Thread.sleep(theTimeYouWantBetweenTheScans);
}
创建一个 .bat 文件以方便使用,例如 java -jar myMonitor.jar
性能取决于您的代码,但它不应该很重。享受。