2013-03-09 2 views
0

У меня есть запрос Sparql на файл OWL 'ressu.owl', который был создан с помощью протеже 3.x .. Я обязан указывать преобразование набора результатов в нечто полезное, например JTextArea, для этого я работаю с ResultSetFormatter()Return System.out to String

я использовать его как этот

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

и дать мне этот результат в консоли Netbeans:

enter image description here

, но когда я пытаюсь вернуть System.out в строку ::

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 
=============================================================== 

помощь Спасибо большое

+2

Прошу прощения .. Я действительно не понял этот вопрос, как все. – christopher

+0

Что вы подразумеваете под "return X to Y" здесь? – shuangwhywhy

+0

Преобразование X в Y, у меня есть 'ResultSetFormatter.out', я должен преобразовать его в String –

ответ

1

result итератор.

Вы печатали на

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

так что теперь вы в конце итератора и второго вызова:

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

итерацию с этого момента (конец), следовательно, нет строк.

Попробуйте ResultSetFactory.copyResults, чтобы получить набор результатов, который вы можете перемотать (или просто не распечатывать).

+0

большое спасибо –

0

Это не как вы должны сделать это.
Я рекомендую вам создать PrintStream, который оборачивает в ByteArrayOutputStream, следующим образом:

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

Затем передать распечатку потока на призыв «из»:

ResultSetFormatter.out(ps, results, query) ; 

Тогда попробуйте создать строку из байтов выходного массива потока:

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

и выполнить

System.out.println(s); 
+0

, он возвращает эту ошибку:' должен быть пойман или объявлен, чтобы быть брошен' на 'String s = new String (baos.toByteArray()," UTF-8 ");' и если я добавлю try/catch тот же результат, возвращаемый как сообщение i –

+0

спасибо вам, что ваше решение тоже хорошо, я просто не удаляю эту строку 'ResultSetFormatter.out (System.out, results, query) ; 'как сказал @AndyS (или просто не распечатывать). –