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

我经历了一个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(); } } 

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

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

看到这个例子 , 这个 。

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