【问题标题】:In Vb.Net How to know if the file hasnt been changed for x seconds?在 Vb.Net 中如何知道文件是否在 x 秒内没有被更改?
【发布时间】:2010-07-30 23:46:09
【问题描述】:

我正在编写一些涉及每秒更改某些文件的东西。现在,如果文件在 10 秒内没有更改,则意味着在外部某处发生了一些错误。所以,我希望用户知道它。我该如何实现?

抱歉,由于某些问题无法添加 cmets。

@Jeremy - 非常小。准确地说,它不会超过 10-15 个字符。

【问题讨论】:

  • 一种迂回的方法是使用两个变量来检查文件访问时间:一个检查最近修改的时间 (n),另一个保存之前的时间 (n-1) ,其中n-1的初始值为文件创建时间。虽然在编程方面不是很现实。我会接受杰里米的回答。
  • 关于文件内容有多大的任何想法?

标签: vb.net


【解决方案1】:

查看文件的LastWriteTime

If Date.Now.subtract(File.GetLastWriteTime("C:\yourPath\To\The\File.here")).TotalSeconds > 10 Then
    'do something'
End If

编辑:为此需要导入System.IO

【讨论】:

  • 来自 MSDN 的说明:此方法可能返回不准确的值,因为它使用的本机函数的值可能不会被操作系统持续更新。
【解决方案2】:

调查FileSystemWatcher 类。您应该能够跟踪上次更改的时间,然后使用计时器不断检查时间差。

【讨论】:

  • 使用 FileSystemWatcher 时有很多陷阱。我尽量避免它。
  • 嗯,是的...关于这个问题的完整主题。 stackoverflow.com/questions/239988/…
  • 看起来@Shubham 接受了这个答案,所以现在我们只需要等待“为什么它不起作用”的问题 :) 我用过一次。再也不。 (编辑)啊,其实没多久!
【解决方案3】:

是文件内容改变了吗?如果是这样,您可以散列文件内容(或其中选定的 sn-p),然后每 x 秒比较散列值

使用此方法的好处是您不会被操作系统的怪癖(FileSystemWatcher 充满)束缚,并且如果文件在一秒钟内更新两次不会有任何问题(如果只有监控文件更改的时间)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    相关资源
    最近更新 更多