【问题标题】:how to copy content of console to notepad using java [closed]如何使用java将控制台的内容复制到记事本[关闭]
【发布时间】:2017-06-12 12:24:54
【问题描述】:

我使用 java 创建了 xml 文件。我只想通过编码而不是通过运行配置过程将控制台中的xml文件复制到记事本......我尝试使用

PrintStream out = new PrintStream(new FileOutputStream("notepad.txt"));
System.setOut(out);

但上述行会导致在特定位置创建记事本。但是数据不会在记事本中复制。这会导致记事本为空。

用于创建 xml:我使用了以下代码,效果很好

Transformer tf = TransformerFactory.newInstance().newTransformer(); tf.setOutputProperty(OutputKeys.INDENT, "yes");
tf.setOutputProperty(OutputKeys.METHOD, "xml");
tf.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");         Source src = new DOMSource(xmlDoc); Result dest = new StreamResult(System.out);
tf.transform(src, dest);

任何人请帮我解决这个问题......

【问题讨论】:

  • “记事本”是指 Windows 文本编辑器记事本吗?你想打开一个新的记事本窗口,里面有你的 xml 吗?或者您是否希望 XML 出现在现有的记事本窗口中?如果创建一个新文件就可以,还是记事本包含未保存的缓冲区很重要?
  • 最后你尝试out.flush(); 还是out.close();
  • 我想保存在新的记事本文件中。。
  • 我没有用那个 out.flush();

标签: java


【解决方案1】:

看起来你正在使用StreamResult类,所以让我们看看constructor

public StreamResult(OutputStream outputStream)

从字节流构造一个 StreamResult。通常,流应该 使用而不是阅读器,以便变压器可以使用 包含在转换指令中的指令来控制 编码。

因此,它接受OutputStream 作为参数,因此您可以在创建StreamResult 的实例时传递outnew FileOutputStream("notepad.txt"),例如:

Result dest = new StreamResult(out);
out.close();

OR

OutputStream fileOutputStream = new FileOutputStream("notepad.txt");
Result dest = new StreamResult(fileOutputStream);
fileOutputStream.close();

这将确保内容被写入文件。无需为此使用System.out

更新

为了将相同的内容打印到console,您必须使用StringWriter 进行另一次转换,例如:

StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
tf.transform(src, result);
System.out.println(result.toString());

这会将内容打印到控制台。

【讨论】:

  • 谢谢伙伴...效果很好.....但唯一的问题是它在控制台中没有显示任何内容..一切都在记事本中......
  • 这不是您想要的(即将所有内容写入记事本文件)吗?
  • 是的!但我两个都想要!
  • @kumar 更新了答案..
  • 我能够在记事本和控制台中获得结果......感谢您的帮助......
猜你喜欢
  • 2017-10-15
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
相关资源
最近更新 更多