gpt4 book ai didi

java - 在Java中,如何将System.out重定向到null然后再次返回到stdout?

转载 作者:行者123 更新时间:2023-12-01 16:39:56 24 4
gpt4 key购买 nike

我尝试使用以下代码将 System.out 临时重定向到/dev/null,但它不起作用。

System.out.println("this should go to stdout");

PrintStream original = System.out;
System.setOut(new PrintStream(new FileOutputStream("/dev/null")));
System.out.println("this should go to /dev/null");

System.setOut(original);
System.out.println("this should go to stdout"); // This is not getting printed!!!

大家有什么想法吗?

最佳答案

伙计,这不太好,因为 Java 是跨平台的,而“/dev/null”是 Unix 特定的(显然 Windows 上有一个替代方案,请阅读评论)。因此,最好的选择是创建自定义 OutputStream 来禁用输出。

try {
System.out.println("this should go to stdout");

PrintStream original = System.out;
System.setOut(new PrintStream(new OutputStream() {
public void write(int b) {
//DO NOTHING
}
}));
System.out.println("this should go to /dev/null, but it doesn't because it's not supported on other platforms");

System.setOut(original);
System.out.println("this should go to stdout");
}
catch (Exception e) {
e.printStackTrace();
}

关于java - 在Java中,如何将System.out重定向到null然后再次返回到stdout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61877721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com