在java中检查新xml文件的最佳方法

在java中检查新xml文件的最佳方法,java,xml,multithreading,file,jdbc,Java,Xml,Multithreading,File,Jdbc,我正在编写一个程序,解析包含城市旅游景点的xml文件。每个城市都有自己的xml,节点有成本、地址等信息。。。我希望在计时器上有一个线程来检查特定目录中的新xml文件或现有xml文件的最新版本。创建线程不是问题所在。我只是不知道检查这些新文件或更改文件的最佳方法是什么。有没有人对一个简单的方法有什么建议。我在考虑为每个处理过的文件创建一个csv文件,其中包含名称和日期更改信息,然后在检查新的或更改过的xml时检查此csv文件,但这似乎过于复杂,我希望有更好的解决方案。在这一点上,我没有代码可以提供

我正在编写一个程序,解析包含城市旅游景点的xml文件。每个城市都有自己的xml,节点有成本、地址等信息。。。我希望在计时器上有一个线程来检查特定目录中的新xml文件或现有xml文件的最新版本。创建线程不是问题所在。我只是不知道检查这些新文件或更改文件的最佳方法是什么。有没有人对一个简单的方法有什么建议。我在考虑为每个处理过的文件创建一个csv文件,其中包含名称和日期更改信息,然后在检查新的或更改过的xml时检查此csv文件,但这似乎过于复杂,我希望有更好的解决方案。在这一点上,我没有代码可以提供这个机制,我只是在寻找一个方向。
我的想法是,当我得到适合不同城市模式的xml时,它将在下次程序运行时自动更新我的数据库,或者在已经运行的情况下定期更新我的数据库

为了避免轮询,您应该监视包含xml文件的目录。Oracle在

上有大量关于该主题的文档,为了避免轮询,您应该查看包含xml文件的目录。Oracle在

中提供了大量关于该主题的文档,您所描述的内容看起来像是新信息的异步传送。这种问题的一个常见陷阱是争用条件:如果您试图在文件被修改时读取该文件,或者如果您在读取该文件时其他人试图写入该文件,会发生什么情况?如果你的应用程序(或编辑XML文件的应用程序)在处理过程中中断会发生什么?为了避免此类问题,您应该移动文件(更改名称或目录)以跟随其状态,因为移动是普通文件系统上的原子操作。如果您想要防弹解决方案,您应该具备:

  • 由外部部件编辑或传输的文件
  • 正在完全编辑或传输的文件,可供应用程序读取
  • 正在处理的文件
  • 已完全处理的文件
  • 包含错误的文件(试图处理错误,但无法完成处理)
前两个由外部负责(您只需定义接口合同),后两个由您负责。如果有4个或5个目录(如果您选择该解决方案),则成本为:

  • 如果在编辑传输xml文件时出现任何问题,则外部应用程序只需重新启动其操作
  • 如果一个文件不能被处理(语法错误,过大,…),它将被分开进行进一步分析,但不会阻止处理其他文件
  • 您只需查看几乎为空的目录
  • 如果你的应用程序在处理文件时中断,在下一个开始,它可以重新启动它的处理。
      您所描述的内容看起来像是新信息的异步传送。这种问题的一个常见陷阱是争用条件:如果您试图在文件被修改时读取该文件,或者如果您在读取该文件时其他人试图写入该文件,会发生什么情况?如果你的应用程序(或编辑XML文件的应用程序)在处理过程中中断会发生什么?为了避免此类问题,您应该移动文件(更改名称或目录)以跟随其状态,因为移动是普通文件系统上的原子操作。如果您想要防弹解决方案,您应该具备:

      • 由外部部件编辑或传输的文件
      • 正在完全编辑或传输的文件,可供应用程序读取
      • 正在处理的文件
      • 已完全处理的文件
      • 包含错误的文件(试图处理错误,但无法完成处理)
      前两个由外部负责(您只需定义接口合同),后两个由您负责。如果有4个或5个目录(如果您选择该解决方案),则成本为:

      • 如果在编辑传输xml文件时出现任何问题,则外部应用程序只需重新启动其操作
      • 如果一个文件不能被处理(语法错误,过大,…),它将被分开进行进一步分析,但不会阻止处理其他文件
      • 您只需查看几乎为空的目录
      • 如果你的应用程序在处理文件时中断,在下一个开始,它可以重新启动它的处理。