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.