用Layman的术语解释Java中的close()方法

时间:2011-08-19 08:02:08

标签: java methods io

我经历了一个java教程,允许我创建一个文本文件并在其中写下“20 Bruce Wayne”。在主类中调用的最后一个方法名为closeFile(),它在创建后“关闭”文本文件。

如果我没有真正打开文件,为什么文件需要“关闭”?通过“打开”,我的意思是记事本编辑器(不是我正在使用的IDE)弹出“20 Bruce Wayne”字样。请以外行的方式回答我的问题。

Main.java:

class apple {
    public static void main(String[] args)
    {
        createfile g = new createfile();
        g.openFile();
        g.addRecords();
        g.closeFile();
    }
}

createfile.java

public class createfile {
    private Formatter x;

    public void openFile(){
        try{
            x = new Formatter("supermanvsbatman.txt");
        }
        catch(Exception e){
            System.out.println("you have an error");
        }
    }
    public void addRecords(){
        x.format("%s%s%s","20 ", "Bruce ", "Wayne ");
    }
    public void closeFile(){
        x.close();
    }
}

3 个答案:

答案 0 :(得分:9)

当文件被“打开”时,操作系统会将文件标记为已锁定,通常在使用时不会被其他进程删除。 x.close()取消锁定,允许操作系统和其他进程按照文件的意愿执行操作。

答案 1 :(得分:5)

除了售罄活动家的答案,当您使用文件等i / o操作时,您正在使用流向文件添加文本,或从文件中提取文本。当您退出程序时,必须使用方法close()关闭此流,因为您可能会丢失数据。这就像一个保存操作,如果你不保存你的文件(关闭流),你将失去对文件所做的更改。

请参阅此examplethis

答案 2 :(得分:1)

用于关闭在写入模式下打开的文件,因为为了减少/使我们的数据安全,我们使用close()方法 并抛出异常,如(java.io.IOEXCEPTION)为什么意味着任何关于对象的方法调用只是因为它是public void close(),这意味着它是实例所以它是与对象相关的调用所以在某些时候是有一个有机会获取对象获取null任何方法调用相对于null引用然后它得到NullPointerException所以这是代码  finally块中的代码表示我们打开的文件,以及在finally块中放弃的所有文件