代码之家  ›  专栏  ›  技术社区  ›  Fazal

使用apache fileutils触摸文件

  •  2
  • Fazal  · 技术社区  · 14 年前

    我已经研究了ApacheCommonsFileUtils.java类的源代码,以了解它们如何实现类Unix的触摸功能。但我想与这里的社区确认,在实现打开和关闭一个文件输出流以提供触摸功能时,是否能够满足我的用例。

    我们有两个WebServer,在它们之间有一个公共服务器,其中一个位于文件所在的位置

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

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

    但我想知道,即使我使用apache commons fileutils touch方法来完成此操作,关闭一个Web服务器上的流也会使用Web服务器或中央服务器的时间设置文件的最后修改时间。

    很抱歉提供了这么多细节,但找不到其他方法来解释这个问题。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Stephen C    14 年前

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

    我认为你有三个选择:

    • 配置服务器,使其时钟与公共时基同步;例如,使用ntp,
    • 将时间戳必须精确到一台服务器上的公共时基的所有文件,或
    • 更改您的系统设计,使其不受不同服务器时钟不同步的问题的影响。
        2
  •  0
  •   Paul Jowett    14 年前

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