输出到文本文件,控制台为空-Java
代码工作,它创建一个新的文本文件,并将我从控制台的输出放入文本文件。问题是我的主机上没有显示任何内容。如何修复此问题?您可以使用Apache commons io中的输出到文本文件,控制台为空-Java,java,Java,代码工作,它创建一个新的文本文件,并将我从控制台的输出放入文本文件。问题是我的主机上没有显示任何内容。如何修复此问题?您可以使用Apache commons io中的TeeOutputStream将流一分为二: 这将创建一个打印流写入原始系统输出(即控制台)和您的文件 在Maven中,以下是可用于将commons io添加到项目中的依赖项片段: OutputStream fos = new FileOutputStream("results.txt"); OutputStream console
TeeOutputStream
将流一分为二:
这将创建一个打印流
写入原始系统输出
(即控制台)和您的文件
在Maven中,以下是可用于将commons io添加到项目中的依赖项片段:
OutputStream fos = new FileOutputStream("results.txt");
OutputStream consoleOut = System.out;
PrintStream newOut = new PrintStream(new TeeOutputStream(consoleOut, fos));
System.setOut(newOut);
公地io
公地io
2.6
首先,您必须创建一个从OutputStream接口继承的类,以实现适配器模式(我还不确定是否为适配器)
然后您可以使用下面这个类
MAIN
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
TreeOutputStream
PrintStream finalStream;
TreeOutputStream tos;
PrintStream out;
out = new PrintStream("logs.txt");
tos = new TreeOutputStream();
tos.add(out);
tos.add(System.out);
finalStream = new PrintStream(tos);
System.setOut(finalStream);
公共类TreeOutputStream扩展了OutputStream{
私有最终列表流;
公共空添加(输出流操作系统){
添加(操作系统);
}
公共无效删除(OutputStream os){
删除(操作系统);
}
公共树输出流(){
streams=新的ArrayList();
}
@凌驾
公共无效写入(int i)引发IOException{
streams.stream().forEach(strm->{
试一试{
标准写入(i);
}捕获(IOEX异常){
Logger.getLogger(TreeOutputStream.class.getName()).log(Level.SEVERE,null,ex);
}
});
}
}
在执行System.setOut之前,out stream将在调用其写入方法的所有流上循环发生什么情况 保存standart控制台 PrintStream标准=System.out 要再次打印到控制台,您应该使用下面的命令切换到standart控制台,然后再选择控制台 系统放样(标准);
System.out.println(“你好!”) 此解决方案的优点是没有链接到任何其他库
PrintStream finalStream;
TreeOutputStream tos;
PrintStream out;
out = new PrintStream("logs.txt");
tos = new TreeOutputStream();
tos.add(out);
tos.add(System.out);
finalStream = new PrintStream(tos);
System.setOut(finalStream);
public class TreeOutputStream extends OutputStream{
private final List<OutputStream> streams;
public void add(OutputStream os){
streams.add(os);
}
public void remove(OutputStream os){
streams.remove(os);
}
public TreeOutputStream() {
streams = new ArrayList<>();
}
@Override
public void write(int i) throws IOException {
streams.stream().forEach(strm->{
try {
strm.write(i);
} catch (IOException ex) {
Logger.getLogger(TreeOutputStream.class.getName()).log(Level.SEVERE, null, ex);
}
});
}