我使用的是FileOutputStream
用PrintStream
这样的:
class PrintStreamDemo {
public static void main(String args[]) {
FileOutputStream out;
PrintStream ps; // declare a print stream object
try {
// Create a new file output stream
out = new FileOutputStream("myfile.txt");
// Connect print stream to the output stream
ps = new PrintStream(out);
ps.println ("This data is written to a file:");
System.err.println ("Write successfully");
ps.close();
}
catch (Exception e) {
System.err.println ("Error in writing to file");
}
}
}
我只关门了PrintStream
。我是否还需要关闭FileOutputStream
(out.close();
)?
不,您只需要关闭最外面的流。它将一直委托给包装的流。
但是,您的代码包含一个概念上的失败,应该在中发生关闭finally
,否则当代码在打开和关闭之间引发异常时,它永远不会关闭。
例如
public static void main(String args[]) throws IOException {
PrintStream ps = null;
try {
ps = new PrintStream(new FileOutputStream("myfile.txt"));
ps.println("This data is written to a file:");
System.out.println("Write successfully");
} catch (IOException e) {
System.err.println("Error in writing to file");
throw e;
} finally {
if (ps != null) ps.close();
}
}
(请注意,我更改了代码以 引发 异常,以便您了解问题的原因,该异常即包含有关问题原因的详细信息)
或者,当您已经在使用Java 7时,也可以使用ARM(自动资源管理;也称为try-with-
resources
),这样您就不需要自己关闭任何东西:
public static void main(String args[]) throws IOException {
try (PrintStream ps = new PrintStream(new FileOutputStream("myfile.txt"))) {
ps.println("This data is written to a file:");
System.out.println("Write successfully");
} catch (IOException e) {
System.err.println("Error in writing to file");
throw e;
}
}
我们有一个java应用程序,我们使用多个语句变量。为什么需要多个语句的问题是,有时在为循环内的一个结果运行循环时,我们需要执行其他一些查询操作。大多数地方,单一的stmt被使用了很多次,最后我们关闭。现在我们要确认的是,我们没有关闭resultset变量,我们注意到内存的使用情况会波动。那么,在得到结果后立即关闭resultset的最佳机制是什么,还是在结束时关闭stmt之前关闭resultset
问题内容: 我刚刚开始将自己的持久性框架迁移到JPA。 鉴于持久性框架隐藏了很多问题,我想知道不关闭EntityManagers是否会造成资源泄漏,或者框架是否会为我收集并关闭它们。 我打算在所有地方关闭它们,但是我必须关闭吗? 目前使用TopLink只是因为它可以轻松地与NetBeans一起使用,但是很高兴调查其他JPA提供程序。 问题答案: 这取决于您如何获得它。 如果使用EntityMana
问题内容: 当我仅使用PHP的内置MySQL函数在PHP中打开MySQL连接时,我将执行以下操作: 当我打开与PDO的连接时,它看起来像这样: 我是否必须像与and 一样显式关闭连接?如果没有,PHP如何知道何时完成连接? TIA。 问题答案: 使用让PDO知道它可以关闭连接。 PHP:PDO连接和连接管理 成功连接到数据库后,PDO类的实例将返回到您的脚本。该连接在该PDO对象的生存期内保持活动
问题内容: @Entity public class A { @GeneratedValue @Id private long id; 建立关系,我必须打电话 为什么两者都是必要的,为什么仅仅做是不够的 要么 ? 该关系存储在联接表中,并将更新该联接表。 但是当我之后进行查询时,它为空。这是为什么? 这是一个测试案例,说明了这个问题。请注意,最后一个断言失败。 动机: 当数量增加时,通过更改“仅一
问题内容: 在Spring Data JPA文档中,它说明了有关流的信息: Stream可能包装了基础数据存储的特定资源,因此必须在使用后关闭。您可以使用close()方法或使用Java 7 try-with- resources块来手动关闭Stream。 参见:http : //docs.spring.io/spring- data/jpa/docs/1.10.1.RELEASE/refer
问题内容: 我要问的是两种情况:技术上和风格上。 我的应用程序/守护进程可以在其中保存pidfile 吗? 这样做很不好吗? 我的需要是:我的守护程序在特定用户下运行,实现者必须在,chown和chgrp中的mkdir新目录中运行我的守护程序。似乎仅将pidfile保留在本地(对于守护程序)似乎更容易。 问题答案: 我不会将pidfile放在诸如的应用程序安装目录下。该目录可以是只读的,可以在机器