当前位置: 首页 > 知识库问答 >
问题:

如何将输出写入与show()函数显示的输出相同的文本文件

纪佐
2023-03-14

我想知道如何将输出写入与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();
    }
    }
    }

共有1个答案

拓拔富
2023-03-14

不要调用p.show(),而是使用p.show(sb),其中sb是StringBuffer。然后您可以从StringBuffer中获取文本。下次在opennlp的留档中深入查看。

 类似资料:
  • 阅读器bean 我尝试这样做:在FlatFileItemReader的实现中,将输入文件路径作为string属性添加到ExecutionContext的映射中。在我的FlatFileItemWriter实现中-重写setResource,并实际从ExecutionContext的值中创建一个Resource对象。这样行吗?

  • 文件 std::fs::File 本身实现了 Read 和 Write trait,所以文件的输入输出非常简单,只要得到一个 File 类型实例就可以调用读写接口进行文件输入与输出操作了。而要得到 File 就得让操作系统打开(open)或新建(create)一个文件。还是拿例子来说明 use std::io; use std::io::prelude::*; use std::fs::File;

  • 我正在学习Hadoop,并尝试执行我的Mapduce程序。所有Map任务和Reduce er任务都完成得很好,但Reducer将Mapper Output写入Output文件。这意味着根本没有调用Reduce函数。我的示例输入如下所示 预期输出如下所示 以下是我的计划。 这里问了同样的问题,我在reduce函数中使用了Iterable值作为该线程中建议的答案。但这并不能解决问题。我不能在那里发表评

  • 主要内容:puts 语句,实例,gets 语句,实例,putc 语句,实例,print 语句,实例,打开和关闭文件,语法,读取和写入文件,实例,实例,实例,实例,实例,重命名和删除文件,实例,实例,文件模式与所有权,实例,文件查询,实例,实例,实例,实例,实例,实例,实例,实例,Ruby 中的目录,创建文件 & 临时目录,内建函数Ruby 提供了一整套 I/O 相关的方法,在内核(Kernel)模块中实现。所有的 I/O 方法派生自 IO 类。 类 IO 提供了所有基础的方法,比如 read、

  • 输出。 我想写的输出文件与inputfile完全相似,但顺序不是问题。我怎样才能做到,请帮帮我。

  • 问题内容: 在我的机器上,我有一些软件可以在终端中接收命令并返回值列表。 要运行它,我必须输入以下内容: 我正在尝试将其作为python程序的一部分运行。当我运行以下命令时: 然后我得到想要返回到终端的值(其中epoch_name是文件名的变量名)。但是,当我尝试将结果写入文件时: 产生了文件123.txt,但它为空。 我知道我放错了“和/或’字符,但是我不知道它们应该去哪里。 任何帮助将不胜感激