我正在编写一个程序来解析拥有城市旅游景点的xml文件。每个城市都有自己的xml,节点有成本,地址等信息...我想在计时器上有一个线程来检查新的xml文件或特定目录中现有的新版本。创建线程不是问题。我只是不知道检查这些新文件或更改文件的最佳方法是什么。有没有人有任何建议,一个简单的方法来做到这一点。我正在考虑为处理的每个文件创建一个csv文件,其中包含名称和日期更改信息,然后在检查新的或更改的xml时检查此csv文件,但这看起来过于复杂,我想要一个更好的解决方案。我现在没有代码提供这种机制,我只是想找个方向进去。 我的想法就是为不同的城市提供符合模式的xml,它将在下次程序运行时自动更新我的数据库,或者如果已经运行则会定期更新。
答案 0 :(得分:4)
要避免轮询,您应该观察包含xml文件的目录。 Oracle在Watching a Directory for Changes
上有关于该主题的大量文档答案 1 :(得分:0)
您所描述的内容看起来像异步提供新信息。这种问题的一个常见缺陷是竞争条件:如果您在修改文件时尝试读取文件,或者在您阅读文件时其他东西试图写入文件,会发生什么?如果您的应用程序(或编辑您的xml文件的应用程序)在处理过程中中断,会发生什么?为避免此类问题,您应移动文件(更改名称或目录)以跟随其状态,因为移动是普通文件系统上的原子操作。如果你想要一个防弹解决方案,你应该:
第一个是外部责任(你只是定义一个接口合同),后者是你的。如果4或5个目录(如果您选择该解决方案)的成本,则收益为: