【问题标题】:Detect a file that will be modified检测将被修改的文件
【发布时间】:2016-02-01 03:55:09
【问题描述】:

我有一个大目录,其中包含由单独系统以不同时间间隔修改的文件。我正在这个目录上运行一个观察程序来检测哪些文件被修改了。

我想知道当系统访问文件进行修改时是否会发生某种触发器。如果是这样,以下将适用:

使用Java,是否可以检测哪些文件即将被修改并在此之前进行临时备份?
或者,是否可以将新修改的文​​件与之前的版本进行比较?

在这种情况下,不可能备份每个文件,因为文件很大而且数量很多。

示例:

我有四个文件:

a.xml
b.xml
c.xml
d.log

b.xml 添加了一个新部分。

是否可以将新创建​​的部分复制到 d.log 中?

【问题讨论】:

  • 你的方法。不,您可以编写某种服务,允许进程请求、修改和提交“文件”,但这不是一项简单的任务。另一种方法可能是先备份所有文件,然后在修改它们时,您可以生成某种形式的历史记录,但同样,它变得复杂

标签: java file detect file-watcher


【解决方案1】:

我能想到一种可能解决您的问题的方法。 "维护一个日志文件,跟踪每个文件的 lastModified 日期,您可以使用您的日志文件验证哪个文件已被修改。

-- 日腾德拉

【讨论】:

  • 但这家伙想在文件实际更改之前检测任何文件更改。
【解决方案2】:

没有。您无法检测到将被修改的文件。直到他们想出一个高度准确的未来预测人工智能系统。

您最好的方法是维护文件的版本备份。我将从研究一些源代码管理系统设计注意事项开始。

【讨论】:

  • 听起来很有趣。感谢那。我对编程还是很陌生,想知道在修改它时是否有某种方法可以告诉我,就像某些文件的名称附加一个“~”一样。谢谢你的建议,我去看看!
  • 如果你可以控制修改器程序,它变得相当简单。 “从外部检测文件修改”方法的主要问题之一是无法确保您正在备份文件的旧版本并且它尚未被修改。
  • 即使你知道你的程序创建了一个临时文件(带有 ~ 或类似的),在某些情况下你的文件在你检测到它并进行备份之前已经被修改了。
【解决方案3】:

您如何知道文件是否即将被修改?系统处理所有的文件 IO。您可以这样做的唯一方法是让执行修改的程序触发备份,然后进行修改。为了比较,这取决于你想要什么。如果您想要逐行比较,使用 Java 的文件 IO 类应该相当简单。如果您只想检查它们是否相同,您可以对两个文件使用校验和。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 2011-11-15
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    相关资源
    最近更新 更多