如果文件正在被输入流读取,则删除文件不会抛出 IOException

问题描述

在通过 BufferedReader 读取文件时,如果我通过 rm -rf 删除文件,则 BufferedReader 将在没有 IOException 的情况下终止

解决方法

这是正常的预期行为。在类 Unix 系统上删除文件包括删除指向目录条目表中文件数据位置的链接。当没有指向文件的链接,并且没有文件描述符打开它时,它的空间将被回收。由于当前打开了一个文件描述符(通过使用 BufferedReader),它将保持打开状态,直到 BufferedReader 完成。尽管该文件已打开,但它在目录列表中不可见。