[英]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.