我在从 Java 调用系统命令时遇到问题。我尝试过以下方法:
if (!found) {
dbContents += ";" + getPreviousValue(i, dbContents);
try {
String cmd = "echo \"Device " + headers[i] + " no data incoming at " + timeString + "\" >> /home/envir/11/log.txt";
Runtime.getRuntime().exec(cmd);
Console.out("N");
}
catch(IOException ioe) {
System.out.println(ioe);
}
问题是文件“log.txt”永远不会被创建。我检查了 if 子句是否执行过,我可以看到该消息
Console.out("N");
确实出现了,所以我不知道为什么前面的两行代码没有出现。
这是打印“N”的证据:
我必须说,这是我第一次使用从 java 文件调用系统命令的东西,所以也许这可能是一个新手错误。
如果有人能回答这个问题,我将不胜感激。
提前致谢。
最佳答案
您的命令可能失败。任何错误消息都会发送到您忽略的 Process.getErrorStream(),因此您看不到它。
就您而言,如果您想要将所有内容追加到日志文件中,那么最好的方法是使用 Java。它更快、更干净、更有效。
PrintWriter pw = new PrintWriter(new FileWriter("/home/envir/11/log.txt", true));
pw.println("Device " + headers[i] + " no data incoming at " + timeString);
pw.close();
问题可能是“echo”不是您系统上的程序。如果您正在运行 shell,则它将包含仅在该 shell 运行时才可用的命令。
顺便说一句 >>
是只有 shell 才能理解的语法。
关于java - 从java调用系统命令来保存日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12280600/