Arquivo de mídia pode ser reproduzido depois de apagado?

2

Eu experimentei o seguinte paradoxo muitas vezes, e não entendo como isso acontece.

Eu abro um arquivo grande de música / vídeo (digamos 100 MB), e quando ele começa a ser reproduzido, eu o excluo (permanentemente). Apesar disso, o reprodutor de mídia poderá tocar a coisa toda.
Eu acho que não armazena todo o arquivo no começo, porque

  • uso de memória pelo processo é de apenas 15 MB
  • e não é isso que os media players fazem de qualquer maneira.

Então, como isso acontece?

    
por Dave 11.02.2013 / 21:07

1 resposta

6

Os detalhes exatos dependem do seu sistema, mas a idéia básica é que o sistema de arquivos subjacente não vai tirar o tapete de um arquivo aberto. Ele o exclui de qualquer lugar que você possa vê-lo, mas ele não vai realmente limpar os blocos no disco (nem alguma representação das estruturas de diretório que apontam para o arquivo) até você fechá-lo.

Em sistemas Unix, isso é comum: a maioria dos sistemas de arquivos unix não explodem um inode até que o último filehandle aberto seja fechado.

No Windows, parece que se o processo de abertura especificar 'FILE_SHARE_DELETE' para a chamada CreateFile (que um programa bem comportado deve fazer), o driver do sistema de arquivos processará a exclusão, mas os arquivos abertos ainda poderão acessá-lo. Depois que o último HANDLE aberto para o arquivo for fechado, o arquivo será limpo pelo driver do sistema de arquivos.

    
por 11.02.2013 / 21:18