媒体文件删除后还能播放吗?

Dav*_*ave 2 media-player

我曾多次经历过以下悖论,我不明白它是怎么发生的。

我打开一个大的音乐/视频文件(比如 100 MB),当它开始播放时,我将其删除(永久)。尽管如此,媒体播放器将能够播放整个内容。
我猜它一开始不会缓冲整个文件,因为

  • 进程的内存使用量仅为 15 MB
  • 无论如何,这不是媒体播放器所做的。

那么这是怎么发生的呢?

Mic*_*hne 6

确切的细节取决于您的系统,但基本思想是底层文件系统不会从打开的文件下拉出地毯。它会从您可以看到的任何地方删除它,但在您关闭它之前,它实际上不会清理磁盘上的块(也不会清除指向文件的目录结构的某些表示)。

在 Unix 系统上,这很常见:在最后一个打开的文件句柄关闭之前,大多数 Unix 文件系统不会吹走 inode。

在 Windows 上,似乎如果打开过程为 CreateFile 调用指定了“FILE_SHARE_DELETE”(一个行为良好的程序应该这样做),那么文件系统驱动程序会处理删除,但打开的文件仍然可以访问它。一旦文件的最后一个打开的 HANDLE 关闭,文件系统驱动程序就会清理文件。

  • @Dave - 请参阅我的修订版 - Windows 有一种方式(表现良好的)程序可以使其正常工作。 (2认同)