我从互联网上找到了下面的代码,可以工作,但它不会将打印的控制台写入 omt.txt,它只写入System.out.println
第二个 catch 块之后的语句。如果您运行一次代码,您就会明白我的意思。我想要的就是将控制台上的内容写入“omt.txt”文件,这就是...
经过一些回答,我发现我的问题不清楚,对此感到抱歉。
我想将控制台输出保存到 omt.txt 文本文件。如果在控制台上打印“Hello 123”,它也应该在 omt.txt 文件中。换句话说,控制台上打印的任何内容都应该同时写入 om.txt 文件中,或者可以在控制台执行之后写入,但应该是1对1一样!
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;
public class Wrt_file {
public static void main(String[] args) {
System.out.println("THIS is what I see on the console. but not on TEXT file");
File f = new File("omt.txt");
if(!f.exists())
{
try {
f.createNewFile();
} catch (Exception e) {
e.printStackTrace();
}
}
try {
FileOutputStream fos = new FileOutputStream(f);
PrintStream ps = new PrintStream(fos);
System.setOut(ps);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("THIS is what I see on the text file, but not on CONSOLE");
for (int i=0; i<10; i++){
System.out.println("Testing");
}
}
}
得知OP想要复制流后更新了答案
由于您想在两个流中写入数据,请尝试使用TeeOutputStream from 阿帕奇共享区。第二次尝试更改您的代码
try {
FileOutputStream fos = new FileOutputStream(f);
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
try {
fos.flush();
}
catch (Throwable t) {
// Ignore
}
}, "Shutdown hook Thread flushing " + f));
//we will want to print in standard "System.out" and in "file"
TeeOutputStream myOut=new TeeOutputStream(System.out, fos);
PrintStream ps = new PrintStream(myOut, true); //true - auto-flush after println
System.setOut(ps);
} catch (Exception e) {
e.printStackTrace();
}
现在结果来自System.out
也将被放入您的文件中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)