我曾多次经历过以下悖论,我不明白它是怎么发生的。
我打开一个大的音乐/视频文件(比如 100 MB),当它开始播放时,我将其删除(永久)。尽管如此,媒体播放器将能够播放整个内容。
我猜它一开始不会缓冲整个文件,因为
那么这是怎么发生的呢?
确切的细节取决于您的系统,但基本思想是底层文件系统不会从打开的文件下拉出地毯。它会从您可以看到的任何地方删除它,但在您关闭它之前,它实际上不会清理磁盘上的块(也不会清除指向文件的目录结构的某些表示)。
在 Unix 系统上,这很常见:在最后一个打开的文件句柄关闭之前,大多数 Unix 文件系统不会吹走 inode。
在 Windows 上,似乎如果打开过程为 CreateFile 调用指定了“FILE_SHARE_DELETE”(一个行为良好的程序应该这样做),那么文件系统驱动程序会处理删除,但打开的文件仍然可以访问它。一旦文件的最后一个打开的 HANDLE 关闭,文件系统驱动程序就会清理文件。
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |