|
|
1
2
这实际上与缓存无关。相反,它的工作方式取决于Unix文件系统的工作方式。当打开一个文件时,它的inode被读取,并指示数据在磁盘上的位置。当文件被移动或删除(“取消链接”)时,inode被移动到新位置或从目录中删除。但是,它所指向的数据在不存在对inode的引用之前不会失效。换句话说,只要文件保持打开状态,删除或移动它对读取该文件的程序没有影响。
它工作得非常好,有时程序甚至会使用一个技巧,通过创建一个文件并立即“删除”它,同时保持它的打开状态来自动清理它。这样,临时文件就可以继续使用,直到程序处理完它,这时它就会自动“消失”。 顺便说一下,那些希望能够关闭并重新打开临时文件的程序 将 如果你移动它们,就会感到困惑。您可以通过使用硬链接制作“副本”来避免这种情况。
内容 只创建对磁盘上相同数据的第二个引用。这样,当Flash关闭时,仍然有一个指向它发布的数据的“指针”。 我已经有一段时间没有研究过这个话题了,我可能弄错了一些术语,所以我建议如果你想进一步理解,请阅读inodes和how hard links 工作。 从维基百科链接:
|
|
2
2
即使从temp文件夹中删除文件,内容仍会继续播放,因为Flash已将文件读入内存以显示它。从概念上讲,这与将本地存储的图像拖到浏览器中时,如果删除该文件,浏览器不会停止显示该图像的原因是一样的。
不过,对于视频来说,可能有一些警告——例如,如果你在视频中向前或向后搜索,我无法保证如果删除了缓存版本,视频是否会从内存中播放。。。我可以想象,在某些情况下,Flash无法将整个电影保存在内存中。但一般情况下,答案应该如这里所述。 |
|
|
3
0
我猜你在描述尼克斯系统的行为? this ,或 inotify ,或 this .NET event . 如果现代版本的Windows允许您移动临时的.flv文件,我会感到惊讶,如果flash没有因此而关闭,那就太疯狂了。 但是,我的猜测是,在你的操作系统上,flashplayer在文件移动时不会出错,因为它接收到一个新路径的句柄,以防需要再次读取文件。如果在播放一段长视频(比如一小时)时故意更改权限或损坏或删除.flv,会发生什么情况? |