【问题标题】:Alternate to print greater than (>) symbol in Ubuntu在 Ubuntu 中替代打印大于 (>) 符号
【发布时间】:2014-08-24 12:19:09
【问题描述】:

可能是这个问题太简单了,但我花了很多时间,但我无法弄清楚。我正在尝试执行echo 命令,在该命令中我试图在文本文件中附加一些数据。在终端中运行时一切正常,但是当我尝试通过Runtime.getRuntime().exec("echo my text >> file.txt") 运行它时,>> 不起作用。

有什么方法可以提供代码或其他东西以使该命令起作用吗?我试过>,但它对我不起作用。

【问题讨论】:

  • 你试过echo 'my text' >> file.txt吗?
  • 是的。它工作正常。我也试过这样。 echo \'my text\' >> file.txt。这工作正常。这就是为什么我要询问> 的替代方案。
  • 为什么不直接在 Java 代码中添加文本行?
  • 它不能直接工作。
  • @TauqeerAhmad 我的意思是,您是否尝试在 java 字符串中添加两个单引号?那么,ErstwhileIII 是对的,为什么不用java IO api 直接写入文件呢?

标签: java terminal ubuntu-13.04


【解决方案1】:

问题是:应该在哪个shell中执行echo命令? Runtime.exec 可以得到一个 cmdArray。 http://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#exec%28java.lang.String[],%20java.lang.String[]%29

import java.io.*;

class RuntimeExecLinux {
  public static void main(String[] args){
      try {
        // Execute a command with arguments
        String[] cmd = new String[]{"/bin/bash", "-c", "echo 'my text from java' >> file.txt"};
        Process child = Runtime.getRuntime().exec(cmd);

        cmd = new String[]{"/bin/bash", "-c", "cat file.txt"};
        child = Runtime.getRuntime().exec(cmd);

        // Get the input stream and read from it
        InputStream in = child.getInputStream();
        int c;
        while ((c = in.read()) != -1) {
            System.out.print((char)c);
        }
        in.close();

      } catch (IOException e) {
        e.printStackTrace();
      }
  }
}

问候

阿克塞尔

【讨论】:

  • 非常感谢您的完美回答!
猜你喜欢
  • 2011-10-18
  • 2022-11-26
  • 1970-01-01
  • 2017-03-25
  • 1970-01-01
  • 2017-10-05
  • 2011-06-26
  • 2012-01-10
  • 1970-01-01
相关资源
最近更新 更多