我想System.out.println
从我的 java 代码中删除/注释所有出现的 。这System.out.println
可能在里面,,,,或if
任何地方。由于源代码文件很大,我无法手动完成。if else
for
while
请帮我自动化这个过程。是否有任何重构工具可用于此任务?我可以为此使用 eclipse JDT 吗?
我想System.out.println
从我的 java 代码中删除/注释所有出现的 。这System.out.println
可能在里面,,,,或if
任何地方。由于源代码文件很大,我无法手动完成。if else
for
while
请帮我自动化这个过程。是否有任何重构工具可用于此任务?我可以为此使用 eclipse JDT 吗?
更新
如此处所述,创建一个 NullOutPut
public final DevNull {
public final static PrintStream out = new PrintStream(new OutputStream() {
public void close() {}
public void flush() {}
public void write(byte[] b) {}
public void write(byte[] b, int off, int len) {}
public void write(int b) {}
} );
}
并替换System.out.print
为DevNull.out.print
然后切换到日志框架,让您轻松处理事情
链接
你可以使用源代码文件中的原始查找/替换功能来注释掉(或删除)语句,但是任何正则表达式都可以很容易地被破坏,所以也许您最好注意像 log4j 或 slf4j 这样的日志框架。
首先是大图:而不是使用通常的System.out.println()
,您最终将使用如下代码行:
logger.debug("Just entered main");
日志框架可以配置一个简单的属性文件,因此您可以拥有多个附加程序(控制台、文件、数据库等)并根据需要分别关闭每个附加程序(例如控制台附加程序)。要切换到日志 API,您仍然必须对源文件执行原始查找/替换,并且可能手动修复一些事情,无论是在您的 IDE 中,还是使用如下命令:
find src/ -name '*.java' | \
xargs sed -i -e 's/System.out.println/logger.verbose/g'
如果您不使用 IDE,在 Linux 上:
sed '/System.out.println/d' %YOUR_PROJ_DIR%/*.java
在 Windows 上,如果你安装了 cygwin,你也可以这样做。
正如 Jigar Joshi 所说,使用查找和替换方法可能会对您有很大帮助,特别是如果您不干扰除了System.out.println
.
如果您不需要编辑/更改源代码,我会提出不同的解决方案。您可以在驱动程序中禁用System.out
流,然后这些语句不会打印任何内容。您只需要像这样设置它:
System.setOut(new PrintStream(new OutputStream() {
public void write(int b) {
// No operation.
}
public void close() {}
public void flush() {}
public void write(byte[] b) {}
public void write(byte[] b, int off, int len) {}
public void write(int b) {}
}));
我已经使用 jEdit 文本编辑器来完成这样的任务。可能还有其他文本编辑器可以做到这一点,重要的功能是通过目录/子目录进行查找和替换搜索。
我不是 Java 程序员,但这个解决方案应该适用于任何语言。希望有帮助。祝你好运!
您可以使System.out.println
应用程序中的所有内容不在控制台中打印任何内容。创建一个类,如:
import java.io.PrintStream;
public class MyStream extends PrintStream {
private static final MyStream INSTANCE = new MyStream();
public static void init() {
System.setOut(INSTANCE);
}
private MyStream() {
super(System.out);
}
@Override
public void println(Object x) {
return;
}
@Override
public void println(String x) {
return;
}
}
将其用作:
public class Test {
public static void main(String... args) {
MyStream.init();
System.out.println("This line will not print");
}
}
将不再打印。
做一个简单的查找和替换。应该这样做。