Java 一行行读大文件,读的过程中删除文件,竟然还能继续读剩下的?

查看 82|回复 3
作者:albin504   
package io;
import java.io.*;
import java.util.concurrent.TimeUnit;
public class InodeTest {
    public static void main(String[] args) throws IOException, InterruptedException {
        BufferedReader reader = new BufferedReader(new FileReader("/Downloads/2020.zip"), 2);
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
            TimeUnit.MILLISECONDS.sleep(10);
        }
    }
}
这个文件有几百兆,程序执行一会儿,我删除 2020.zip 这个文件(从回收站也删了),竟然还能继续读到剩下的文件,为什么?
难道 java 一次性把文件内容都加载到进程中了吗?

文件, line, import, string

zjsxwc   
文件系统了解下
pluto1   
你看看文件系统剩余空间,应该是没释放的,因为还有 fd 没关掉,其实这时候底层的数据是还在的,等所有 fd 全部关了才会释放
zjp   
看文件路径应该是 Linux ,只有在所有打开此文件的进程都关闭此文件后,文件才会实际删除
https://zhuanlan.zhihu.com/p/25650525
您需要登录后才可以回帖 登录 | 立即注册

返回顶部