繁体   English   中英

将System.out返回给String

[英]Return System.out to String

我在OWL'ressu.owl'文件中查询Sparql,该文件是使用protege 3.x创建的。我有义务指向将结果集转换为像JTextArea这样可用的东西,我使用ResultSetFormatter()

我这样用它

ResultSetFormatter.out(System.out, results, query) ;

它在Netbeans的控制台中给我这个结果:

在此输入图像描述

但是当我尝试将System.out返回给String ::

com.hp.hpl.jena.query.ResultSet results = qe.execSelect();
ResultSetFormatter.out(System.out, results, query) ;
ByteArrayOutputStream go = new ByteArrayOutputStream ();
ResultSetFormatter.out((OutputStream)go ,results, query);
String result = go.toString();
jTextArea1.setText(result);

它只显示在JtextArea中

---------------------------------------------------------------
| hasnamefonctioncontrainte        | hasnamefonctionprincipale 
===============================================================

帮助非常感谢

result是一个迭代器。

你打印出来了

ResultSetFormatter.out(System.out, results, query) ;

所以现在你处于迭代器和第二个调用的末尾:

ResultSetFormatter.out((OutputStream)go ,results, query);

从那一点(结束)迭代,因此没有行。

尝试使用ResultSetFactory.copyResults获取可以倒回的结果集(或者只是不打印出来)。

那不是你应该怎么做的。
我建议您创建一个包装ByteArrayOutputStream的PrintStream,方法如下:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);

然后将打印流传递给“out”调用:

ResultSetFormatter.out(ps, results, query) ;

然后尝试从字节数组输出流创建一个字符串:

String s = new String(baos.toByteArray(), "UTF-8");

并执行

System.out.println(s);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM