我当时正在帮助一个朋友编写一些Java代码,而他们对Java并不了解很多。因此,我给他写了一些辅助函数,以轻松地完成在他眼中有些古怪的事情。其中一个函数是将String写入的函数OutputStream
。看一看:
public void write(String txt, OutputStream out) {
PrintWriter printer = new PrintWriter(out);
printer.print(txt);
printer.close();
}
现在,您可以轻松地以各种方式使用它,在任何地方书写。例如,您可以这样做:
(new StreamHelper()).write("Hello Test", System.out);
这样做后,我发现之后System.out.println()
不再向外壳写入任何内容。所以我认为也许printer.close()
也会自动关闭System.out
,我想知道如何重新激活它,以便在该功能再次完成后可以使用它。
我的假设正确吗?(如何在不询问的情况下找到答案?)
System.out
调用write()
函数后如何继续使用?
有没有更好的方法来编写这样的辅助函数?
OutputStream
的关闭总合同:
public void close()throws
IOException关闭此输出流并释放与此流关联的所有系统资源。关闭的总协定是关闭输出流。关闭的流无法执行输出操作, 因此无法重新打开 。
PrintStream
的
public void close()关闭流。这是通过刷新流然后 关闭基础输出流来完成的 。
我可以给您的唯一建议是,您不应编写非对称代码,即,不要将关闭代码创建的资源委托给其他地方。
即使就您而言,关闭包装流似乎是明智的,事实是您不应该因为关闭正在其他位置打开的流而已。
简而言之:
public void write(String txt, OutputStream out) {
PrintWriter printer = new PrintWriter(out);
printer.print(txt);
printer.flush();
//it is very unpolite to close someone else's streams!
//printer.close();
}
哦,顺便说一句,您可能想将函数名称更改为print
,而不是write
。
我是新手。我对它很着迷,但我不确定它是否适合我的用例。 我想有一个记录器,我可以停止和启动。当它停止时,我想从文件系统中删除日志文件。重新启动日志记录时,应重新创建文件。 logback能做到这一点吗?当日志暂停时,我应该避免在我的类中调用记录器,还是回写可以处理这个问题? 我使用slf4j。记录器当前。在手册中,我看到Appender对象实现了LifeCycle接口,这意味着它们实现了start
问题内容: 我有一个多线程控制台应用程序,它从两个不同的来源获取输入。一种是用户在控制台中键入内容,另一种是网络。我使用BufferedReader.readline()从用户那里获取输入,并且该输入被阻止,这很好,除非在等待时收到网络输入。在那种情况下,我需要通过取消readline()来解除对用户线程的阻塞。 我想最好的取消方法是关闭System.in并使readline()抛出异常。在那之后
问题内容: 我想完全消除HttpSession-我可以在web.xml中这样做吗?我敢肯定,有一些特定于容器的方法可以做到这一点(当我进行Google搜索时,这会挤满搜索结果)。 PS这是个坏主意吗?在我真正需要它们之前,我宁愿完全禁用它们。 问题答案: 我想彻底消除HttpSession 您不能完全禁用它。您所需要做的就是不要在Web应用程序的代码中任何地方)或任何地方获取它的句柄,并确保您的J
问题内容: 我想完全消除HttpSession- 我可以在web.xml中这样做吗?我敢肯定,有一些特定于容器的方法可以做到这一点(当我进行Google搜索时,搜索结果会很拥挤)。 PS这是个坏主意吗?在我真正需要它们之前,我宁愿完全禁用它们。 问题答案: 我想彻底消除HttpSession 您不能完全禁用它。您需要做的就是 不要 在Web应用程序的代码中任何地方或任何地方都得到它的句柄,并确保您
问题内容: 我可以轻松进行“作业”,但是我发现输入流的关闭存在一些问题。简单地说,我必须使用Java创建一个联系人“列表”应用程序,才能以正确的方式使用多态。所以我有一个Contact类和一个Private类(contact)。在这两个类中,都有一个Modify方法来更改变量的值。 这是不会产生问题的Contact方法 相反,这是Private中方法的替代。首先,我创建一个Private对象,然后
我需要编辑aar文件以满足我的需要。我需要编辑aar文件以满足我的需要。我需要编辑aar文件以满足我的需要。我需要编辑aar文件以满足我的需要。我需要编辑aar文件以满足我的需要。我需要编辑aar文件以满足我的需要。我需要编辑aar文件以满足我的需要。我需要编辑aar文件以满足我的需要。我需要编辑aar文件以满足我的需要。我需要编辑aar文件以满足我的需要。我需要编辑aar文件以满足我的需要。我需