如何将控制台输出写入txt文件
我已尝试使用此代码建议(http://www.daniweb.com/forums/thread23883.html#)将控制台输出写入txt文件,但未成功。怎么了?
try { //create a buffered reader that connects to the console, we use it so we can read lines
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
//read a line from the console
String lineFromInput = in.readLine();
//create an print writer for writing to a file
PrintWriter out = new PrintWriter(new FileWriter("output.txt"));
//output to the file a line
out.println(lineFromInput);
//close the file (VERY IMPORTANT!)
out.close();
}
catch(IOException e1) {
System.out.println("Error during reading/writing");
}
回答:
你需要执行以下操作:
PrintStream out = new PrintStream(new FileOutputStream("output.txt"));System.setOut(out);
第二句话是关键。它将假定的“最终” System.out
属性的值更改为提供的PrintStream
值。
可以使用类似的方法(setIn
和setErr
)来更改标准输入和错误流。java.lang.System
有关详细信息,请参考javadocs
。
上面的一个更通用的版本是这样的:
PrintStream out = new PrintStream( new FileOutputStream("output.txt", append), autoFlush);
System.setOut(out);
如果append
为is true
,则流将追加到现有文件,而不是将其截断。如果autoflush
为is true
,则每当写入字节数组,println
调用其中一种方法或写入a时,将刷新输出缓冲区\n
。
我想补充一下,通常最好使用Log4j,Logback或标准Java java.util.logging子系统之类的日志记录子系统。它们通过运行时配置文件提供细粒度的日志记录控制,支持滚动日志文件,系统日志的提要,等等。
或者,如果你不是“记录”,请考虑以下事项:
- 对于典型的Shell,你可以将标准输出(或标准错误)重定向到命令行上的文件。例如
$ java MyApp > output.txt
有关更多信息,请参考Shell教程或手册。
- 你可以更改应用程序以使用out作为方法参数或通过单例或依赖项注入传递的流,而不是写入
System.out
。
更改System.out
可能会导致JVM中其他未预期到的代码令人讨厌。(设计正确的Java库将避免依赖System.out
和System.err
,但是你可能很不幸。)
以上是 如何将控制台输出写入txt文件 的全部内容, 来源链接: utcz.com/qa/424951.html