Ana*_*kie 10 java console file-io fileoutputstream printstream
我从互联网上找到了下面的代码,但它不会将打印的控制台写入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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
Psh*_*emo 21
既然你想要写在两个流数据尝试使用TeeOutputStream来自Apache的百科全书.在第二次尝试更改您的代码
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();
}
Run Code Online (Sandbox Code Playgroud)
现在结果System.out也将放在您的文件中.
| 归档时间: |
|
| 查看次数: |
19312 次 |
| 最近记录: |