【问题标题】:Java inputstream to string in case of a sentence一个句子的Java输入流到字符串
【发布时间】:2014-01-16 16:43:02
【问题描述】:

我有一个外部程序(打包在一个 jar 中),我想从另一个 Java 程序执行它,我使用

Process proc = Runtime.getRuntime().exec(command)

这个 jar 程序现在返回一个句子作为输出,我想稍后在程序中使用它,所以我想转换它的输出,为此我使用我找到的关于使用 IOUtils 的建议here

然而

InputStream in = proc.getInputStream(); 
String myString = IOUtils.toString(in, "UTF-8");

只返回句子的第一个单词。是否可以从输入流中取出完整的句子?

【问题讨论】:

    标签: java string inputstream


    【解决方案1】:

    如果可行,我会采取立即调用其他 JAR 的 main 方法的方法。 这不是孤立的,但您可以将 System.out 设置为捕获所有文本。

    void startOtherApp(String[] args) {
        final String ENCODING = "UTF-8";
        PrintStream oldOut = System.out;
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try (PrintStream out = new PrintStream(baos, false, ENCODING)) {
            System.setOut(out);
            OtherJarsMain.main(args);
            out.flush();
            System.setOut(oldOut);
            String s = baos.toString(ENCODING);
            System.out.println("OUTPUT:\n" + s);
        } catch (UnsupportedEncodingException ex) {
            Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
        }
    }
    

    要找到主类(这里是OtherJarsMain),用7zip/WinZip左右打开jar,然后查看/META-INF/MANIFEST.MF。有一个带有"Main-Class: aa.bb.OtherJarsMain"的文本行。

    【讨论】:

    • 这是一个编译好的jar,所以我无法访问原始的java文件以了解原始main方法的输入。
    • 我用java -jar ... 如何找出主类来扩展我的答案。
    猜你喜欢
    • 2021-01-25
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 2022-01-14
    • 2018-09-04
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    相关资源
    最近更新 更多