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能够在您不需要它们的情况下自动关闭流. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |