Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用apache FileUtils触摸文件_Java_Unix_Apache Commons - Fatal编程技术网

Java 使用apache FileUtils触摸文件

Java 使用apache FileUtils触摸文件,java,unix,apache-commons,Java,Unix,Apache Commons,我已经查看了Apache Commons FileUtils.java类的源代码,以了解它们如何实现类似unix的触摸功能。但我想在这里与社区确认,当实现打开和关闭FileOutputStream以提供触摸功能时,我的用例是否会得到满足 我们有两个Web服务器和一个公共服务器,它们之间有一个文件驻留 对于我们的应用程序,我们需要使用此文件的修改时间来做出一些决定。实际上,我们不想修改该文件,而是在某个Web服务器上发生某些特定活动时更改其上次修改的日期 重要的是,文件的上次修改时间集取自中央服务

我已经查看了Apache Commons FileUtils.java类的源代码,以了解它们如何实现类似unix的触摸功能。但我想在这里与社区确认,当实现打开和关闭FileOutputStream以提供触摸功能时,我的用例是否会得到满足

我们有两个Web服务器和一个公共服务器,它们之间有一个文件驻留

对于我们的应用程序,我们需要使用此文件的修改时间来做出一些决定。实际上,我们不想修改该文件,而是在某个Web服务器上发生某些特定活动时更改其上次修改的日期

重要的是,文件的上次修改时间集取自中央服务器,以避免担心两个web服务器之间的时间差。因此,更改file.setLastModfied不是一个好选项,因为Web服务器会发送自己的时间

但我想知道,即使我使用ApacheCommons FileUtils touch方法来实现这一点,关闭一个Web服务器上的流是否会使用Web服务器或中央服务器的时间来设置文件的最后修改时间

很抱歉提供了这么多详细信息,但无法找到任何其他方法来解释此问题

如果您“触摸”某个Web服务器的文件系统中的文件,则将使用该服务器的时钟设置该文件的时间戳。我认为你不能那样解决你的问题

我想你有三个选择:

  • 配置服务器,使其时钟与公共时基同步;e、 g.使用NTP
  • 将时间戳必须精确到公共时基的所有文件放在一台服务器上,或
  • 更改您的系统设计,使其不受不同服务器时钟不同步问题的影响

    • 如果您有一个共享数据库,那么最好使用它,这样您就可以避免并发和同步问题。我不能推荐任何简单安全的分布式文件标志系统。

      谢谢您的回复。在我们的例子中,文件位于一个公共服务器中,两个Web服务器实际上都使用符号链接指向该位置。通过这种设置,哪台服务器的时钟时间将被拾取?这取决于web服务器如何使用符号链接。他们需要使用
      File.getCanonicalFile()
      或等效工具解决这些问题。此外,这可能取决于Web服务器访问共享文件系统的方式。但是您应该能够通过查看Web服务器实际返回的时间戳得到答案。感谢您的回复。我会调查的