从Java代码执行特定的CMD命令

时间:2012-05-08 20:29:56

标签: java compilation cmd runtime

我有一个带有main方法的.java类文件,它生成一个文件“output.txt”。

我想用Java编写一个编译并运行它的程序,以便将给定Java类生成的文件“output.txt”输出到指定的文件夹。如何才能做到这一点?

我可以编译并运行它,但我无法在Java中创建类似cd命令的东西。不允许在Java中显示绝对类。

2 个答案:

答案 0 :(得分:0)

创建指向指定文件夹的File对象。

然后使用new File(file, "output.text")创建一个引用上面指向的文件夹中的“output.txt”的文件对象。见 http://docs.oracle.com/javase/1.4.2/docs/api/java/io/File.html#File(java.io.File, java.lang.String)

答案 1 :(得分:0)

  

我想用Java编写一个编译并运行它的程序,以便将给定Java类生成的文件“output.txt”输出到指定的文件夹。怎么办呢?

让我们直截了当地说:

  • 现有Java应用程序A在某处输出文件output.txt。您无法更改该应用程序。
  • 您希望编写运行B的应用程序A,以便您可以控制output.txt写入的目录。
问:可以吗?

答:这取决于A打开输出文件的方式。

  • 如果A使用文件的相对路径名;例如new FileWriter(new File("output.txt"))然后就可以了;见下文。

  • 如果A使用文件的绝对路径名;例如new FileWriter(new File("/output.txt"))然后无法完成。没有实际的方法可以使A将文件放在其他位置。 (我不会说它在理论上是不可能的,但是你需要求助于那些没有理智的开发人员会认真思考的事情。)

如何处理相关案例的方法是让B在启动ProcessBuilder时使用AsetDirectory指定不同的当前目录javadoc有一个例子涵盖了这一点;在示例中查找{{1}}的使用及其规范。

(注意:您也可以通过运行更改目录并运行命令的外部脚本来执行此操作。但这种方法涉及特定于平台的事情,如果您希望代码可移植,则应该避免使用。)