Как записать вывод в текстовый файл так же, как вывод, показанный функцией show()

Могу ли я узнать, как записать вывод в текстовый файл так же, как вывод, показанный функцией show(). Например, когда я выполнил этот код:

    p.show();

выход:

    (TOP (S (NP (PRP$ My) (NN name)) (VP (VBZ is) (NP (NNP David.))))

когда я выполнил этот код:

     System.out.println(p.toString());

выход:

    My name is David.

Итак, когда я попытался записать этот вывод в текстовый файл, используя этот код:

    fout.write((p.toString()+newline).getBytes());

вывод в текстовом файле аналогичен выводу, показанному "System.out.println(p.toString());".

Итак, как записать в текстовый файл тот же вывод, что и функция show()?

Полные коды:

    package com.mycompany.app;

    import java.io.BufferedReader; 
    import java.io.DataInputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import opennlp.tools.cmdline.parser.ParserTool;
    import opennlp.tools.parser.Parse;
    import opennlp.tools.parser.Parser;
    import opennlp.tools.parser.ParserFactory;
    import opennlp.tools.parser.ParserModel;
    import opennlp.tools.sentdetect.SentenceDetectorME;
    import opennlp.tools.sentdetect.SentenceModel;

    public class ChunkParser {
    public static void main(String[] args) throws IOException {

    InputStream modelIn = new FileInputStream("D:/NetBeansProjects/my-app/src/main/resources/en-parser-chunking.zip");
    FileInputStream fin=new FileInputStream("D:/NetBeansProjects/my-app/textfile.txt");
    DataInputStream in = new DataInputStream(fin);
    BufferedReader br = new BufferedReader(new InputStreamReader(in));
    String strLine=br.readLine();
    System.out.println("Full Text: "+"\n"+strLine+"\n");

    try {
    ParserModel pmodel = new ParserModel(modelIn);
    Parser parserc = ParserFactory.create(pmodel);
    Parse topParses[] = ParserTool.parseLine(strLine, parserc, 1);

    FileOutputStream fout=new FileOutputStream("D:/NetBeansProjects/my-app/ChunkParser.txt");
    String newline = System.getProperty("line.separator");
    for (Parse p : topParses){
            p.show();
            System.out.println(p.toString());
            fout.write((p.toString()+newline).getBytes());


    }

    fout.close();
    }
    catch (IOException e) {
    e.printStackTrace();
    }
    finally {
    if (modelIn != null) {
    try {
    modelIn.close();
    }
    catch (IOException e) {
    }
    }
    fin.close();
    }
    }
    }

person xera    schedule 07.06.2013    source источник
comment
Посмотрите, как метод show() печатает этот вывод. Вы также можете опубликовать код для этого здесь.   -  person Bhesh Gurung    schedule 07.06.2013
comment
Я думаю, что метод show напрямую использует System.out для вывода. Если это так, то может помочь перенаправление System.out. см. stackoverflow.com/questions/14715748/ для описания. Но если есть лучшие решения, не используйте перенаправление, так как оно, вероятно, добавит другие проблемы.   -  person mschenk74    schedule 07.06.2013
comment
ладно.. я поставил полные коды там   -  person xera    schedule 07.06.2013


Ответы (1)


Вместо вызова p.show() используйте p.show(sb), где sb — это StringBuffer. Затем вы можете получить текст из StringBuffer. В следующий раз внимательно изучите документацию opennlp.

person mschenk74    schedule 07.06.2013