加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 关于用于关闭流的close方法()

发布时间:2020-12-15 04:59:45 所属栏目:Java 来源:网络整理
导读:今天,当我在处理某种servlet时,我正在使用以下代码执行写操作,这些servlet正在向我的硬盘上的某个文件写入一些信息. File f=new File("c:/users/dell/desktop/ja/MyLOgs.txt"); PrintWriter out=new PrintWriter(new FileWriter(f,true)); out.println("the
今天,当我在处理某种servlet时,我正在使用以下代码执行写操作,这些servlet正在向我的硬盘上的某个文件写入一些信息.

File f=new File("c:/users/dell/desktop/ja/MyLOgs.txt");
        PrintWriter out=new PrintWriter(new FileWriter(f,true));
        out.println("the name of the  user is "+name+"n");
        out.println("the email of the user is "+ email+"n");
        out.close();             //**my question is about this statement**

当我没有使用该语句时,servlet编译得很好,但它没有写任何文件,但是当我包含它时,写操作就成功执行了.我的问题是:

>当我不包含该语句时,为什么没有将数据写入文件(即使我的servlet编译没有任何错误)?
>流的关闭操作在多大程度上相当可观?

解决方法

调用close()会导致刷新所有数据.你构建了一个PrintWriter而没有启用自动刷新(其中一个构造函数的第二个参数),这意味着你必须手动调用flush(),close()会为你做.

关闭还可以释放打开文件所使用的任何系统资源.虽然VM和操作系统最终将关闭该文件,但最好在完成后关闭它以节省计算机上的内存.

你也可以把close()放在finally块中,以确保它总是被调用.如:

PrintWriter out = null;
try {
    File f = new File("c:/users/dell/desktop/ja/MyLOgs.txt");
    out = new PrintWriter(new FileWriter(f,true));
    out.println("the name of the  user is "+name+"n");
    out.println("the email of the user is "+ email+"n");
} finally {
    out.close();
}

见:PrintWriter

Sanchit也提出了一个很好的观点,让Java 7 VM能够在您不需要它们的情况下自动关闭流.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读