Java - 在运行时执行命令

4

我尝试了一个简单的程序,用于执行Linux命令。但是下面的程序编译并运行时没有出现任何错误,但是文本文件没有按照预期创建。这个程序有什么问题吗?

import java.io.*;
class ExecuteJava
{
    public static void main(String args[])
    {
            String historycmd = "cat ~/.bash_history >> Documents/history.txt";
            try
            {
                    Runtime runtime = Runtime.getRuntime();
                    Process proc = runtime.exec(historycmd);
            }
            catch(Exception e)
            {
                    System.out.println(e);
            }
    }
}

2
这段代码试图在当前程序运行的目录中写入名为“Documents”的目录。该目录是否存在? - andy256
@andy256 是的,它确实如此。 - Aboorva Devarajan
2个回答

2
尝试访问一些Process提供的函数。我会从exitValue开始。通常,-1表示出现了错误,而0表示没有发生特别糟糕的事情。
另外,请尝试使用InputStreamError Stream,并完全阅读它们。看看它们是否有有用的反馈信息。
除此之外,尝试像andy256在评论中建议的那样。确保程序执行目录中存在Documents目录。

1

追加操作符>>是命令行解释器的一部分。请使用。

String[] historycmd = 
           { "bash", "-c", "cat ~/.bash_history >> Documents/history.txt"};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接