【问题标题】:How to know when writing a file has been finished?如何知道写入文件何时完成?
【发布时间】:2015-07-13 09:43:52
【问题描述】:

我正在编写一个对文件进行操作的程序(仅读取文件),而另一个程序正在写入该文件(我无法控制它使用事件并且我不知道文件的内容)。我想要一种方法来知道该程序何时完成编写,以停止我的程序对文件的操作。这两种方法我都用过,但不知道哪一种可靠,性能更好:

1-将文件重命名为其他名称,如果成功,将其重命名为原始名称。

2-flush file ,如果文件大小有一段时间没有改变(例如 5 秒)然后停止操作。

哪个更好?有没有更好的方法(更可靠、性能更高)?

我在 c++ 中使用 Windows 7 和 qt5.2(或 Visual Studio)。

【问题讨论】:

  • “对文件进行操作”是什么意思,它包括读写操作还是仅包括读取操作?
  • @GingerJack ,它只读取文件。
  • 您可以使用IPC进行有效沟通。您的 Writer 程序设置事件,您的阅读器程序将等待它,当阅读器程序被触发时,它应该停止阅读并关闭文件的句柄。
  • 你的环境是 linux、Mac OS 还是 windows
  • 你检查了吗this answer?

标签: c++ windows file qt5


【解决方案1】:

Qt 提供了一个名为QFileSystemWatcher 的类,它允许您监视文件和目录。

【讨论】:

    猜你喜欢
    • 2011-11-17
    • 2014-03-18
    • 1970-01-01
    • 2015-10-01
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    相关资源
    最近更新 更多