手动删除后,仍然可以读出文件内容?

时间:2012-04-28 01:50:04

标签: java file

import java.io.FileReader;

public class SimpoTest {

    public static void main(String[] args) {
        FileReader fileReader = null;
        try {
            fileReader = new FileReader("/home/brian/Desktop/me");
            int read = fileReader.read();
            System.out.println((char) read);
        } catch (Exception e) {
            fileReader = null;
            e.printStackTrace();
        }
    }
}

1 \ echo“1”> /家庭/布莱恩/桌面/我
2 \将断点设置为“int read = fileReader.read();”
3 \开始调试
4 \ rm -f / home / brian / Desktop / me
5 \跳到最后< ========控制台上仍然输出“1”...

好吧......这对我来说真的很奇怪。因为我应该抛出异常。 谁能给出任何解释? 任何意见或建议表示赞赏。

2 个答案:

答案 0 :(得分:4)

在大多数类Unix系统上,文件的数据保留在磁盘上,直到所有引用消失为止;这包括路径名(硬链接)和打开文件句柄。

答案 1 :(得分:2)

这至少在类似unix的操作系统上是预期的行为:只要有一个打开的文件描述符,rm'd文件的块将保持分配并可通过该文件描述符访问。

但是我希望你不能通过删除的文件名为它们打开一个新的文件描述符。