在做了大量的研究,也没有找到解决我的问题的方法之后,我决定在stackoverflow上发表文章。
嗯,我的问题有点不寻常,所以我想这就是为什么我找不到任何答案的原因:
我有一个将内容录制到文件中的程序。然后我有另一个负责传输该文件的人。最后,我有第三个获取文件并处理它的函数。
我的问题是:文件传输程序需要在文件仍在录制时发送文件。问题是,当文件传输程序到达文件末尾时,文件上的文件并不意味着文件实际上是完整的,因为它仍在被记录。
如果有一些东西来检查记录器是否仍然打开该文件,或者它是否已经关闭了它,以便能够判断文件的结尾是否真正是文件的结尾,或者是否根本没有要读取的进一步数据,这将是一件很好的事情。
希望你能帮我解决这个问题。也许你对如何解决这个问题有另一个想法。
提前谢谢你。
GeKod
发布于 2012-01-05 17:52:27
简单地说-你不能不使用文件系统通知机制,windows,linux和osx都有这样的风格。我忘记了Windows是怎么做的,但是linux有“inotify”,osx有“knotify”。
处理这种情况的简单方法是,记录到一个临时文件,当记录完成后,将该文件移动到“准备传输文件”目录中,如果您这样做,以便当您执行移动时,这些文件在同一文件系统上,它将是原子的和即时的,确保任何时候您的传输实用程序“看到”新文件时,它将完全形成并准备就绪。
或者,让您的临时文件没有扩展名,然后在完成后,将文件重命名为传输代理正在轮询的扩展名。
https://stackoverflow.com/questions/8740409
复制相似问题