当前位置: 首页 > 面试题库 >

如何将控制台输出写入txt文件

欧阳声
2023-03-14
问题内容

我已尝试使用此代码建议(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值。

可以使用类似的方法(setInsetErr)来更改标准输入和错误流。java.lang.System有关详细信息,请参考javadocs

上面的一个更通用的版本是这样的:

PrintStream out = new PrintStream(
        new FileOutputStream("output.txt", append), autoFlush);
System.setOut(out);

如果append为is true,则流将追加到现有文件,而不是将其截断。如果autoflushis true,则每当写入字节数组,println调用其中一种方法或写入a时,将刷新输出缓冲区\n

我想补充一下,通常最好使用Log4j,Logback或标准Java java.util.logging子系统之类的日志记录子系统。它们通过运行时配置文件提供细粒度的日志记录控制,支持滚动日志文件,系统日志的提要,等等。

或者,如果你不是“记录”,请考虑以下事项:

  • 对于典型的Shell,你可以将标准输出(或标准错误)重定向到命令行上的文件。例如
$ java MyApp > output.txt   

有关更多信息,请参考Shell教程或手册。

  • 你可以更改应用程序以使用out作为方法参数或通过单例或依赖项注入传递的流,而不是写入System.out

更改System.out可能会导致JVM中其他未预期到的代码令人讨厌。(设计正确的Java库将避免依赖System.outSystem.err,但是你可能很不幸。)



 类似资料:
  • 问题语句:我有一个在Xcode中运行的程序,它有一堆print()语句,可以很好地将输出打印到调试控制台。然而,我希望也能够将这些输出重定向到一个文件,这样我就可以让用户将它们发送给我,作为调试的一种方式。 SO上找到的解决方案使我可以将输出重定向到文件,但调试控制台输出将丢失。 问:我想要我的蛋糕和吃它。我希望能够将print()语句重定向到调试控制台和文件。 所以我有引用:https://st

  • 问题内容: 我已经在该站点附近搜索了答案,但找不到任何答案。 我有一个表格,我想将输入内容写入txt文件。为了简单起见,我只写了一个简单的表单和脚本,但是它一直让我空白。这就是我得到的 这是我的PHP文件 问题答案: 您的表格应如下所示: 和PHP 我写信是因为这样我才知道确切的位置。使用写入当前工作目录中的文件,在您的示例中我一无所知。 为您打开,写入和关闭文件。不要惹它。 进一步阅读: fil

  • 问题内容: 我正在尝试在python中找到一种将脚本执行日志重定向到文件以及以pythonic方式的方法。有没有简单的方法可以做到这一点? 问题答案: 我想出了这个[unested] 在python中将期望有一个函数。您可以使用具有此功能的自定义对象。否则,您也可以让sys.stdout引用您的对象,在这种情况下,即使没有,它也会被准备。

  • 问题内容: 我是python的新手,正在编写一些脚本来自动从FTP服务器等下载文件。我想显示下载进度,但是我希望它保持不变,例如: 输出: 正在下载文件FooFile.txt [47%] 我正在尝试避免这样的事情: 我应该怎么做呢? 复制 : 如何在命令行应用程序的当前行上打印? 问题答案: 您还可以使用回车符:

  • 我已经尝试用下面的代码将应用程序的输出保存到txt文件中。它可以将输出写入txt文件,但输出没有显示在控制台显示中。如何处理显示在控制台和保存到文件的输出? 代码运行后控制台显示和txt文件

  • 所以我有一个Laravel控制器: 目前,我正在使用artisan(在引擎盖下运行PHP的内置开发Web服务器)运行应用程序: 我想将控制台消息记录到artisan进程的管道中。