【发布时间】:2011-02-11 05:34:42
【问题描述】:
我想在运行 java 程序时使用像 mkdir 和 rmdir 这样的系统命令。
我该怎么做?
【问题讨论】:
标签: java command-line cmd
我想在运行 java 程序时使用像 mkdir 和 rmdir 这样的系统命令。
我该怎么做?
【问题讨论】:
标签: java command-line cmd
为什么要使用命令行?仅供参考,有内置的独立于平台的File 类。
http://www.exampledepot.com/egs/java.io/deletefile.html
http://www.roseindia.net/java/beginners/java-create-directory.shtml
制作目录:
new File("dir path").mkdir();
删除目录:
new File("dir path").delete();
这里的'new File'有点用词不当,它实际上并不是创建目录或文件。它正在创建一个 Java 资源挂钩,您可以使用它来查询或操作现有的文件系统资源,或者根据您的要求创建一个新资源。否则,使用Runtime.getRuntime().exec("command line here") 进行命令行操作(不建议使用!!)。
编辑:整理出问题发布者遇到的问题:
String envp[] = new String[1];
envp[0] = "PATH=" + System.getProperty("java.library.path");
Runtime.getRuntime().exec("command line here", envp);
注意envp 插入到exec(..) 方法调用中,这基本上是来自环境的PATH 变量。
【讨论】:
正如前面提到的,您不应该为简单的文件管理而这样做。但是要提到它:Java API 有一个名为Runtime 的类,它允许系统调用......例如:
Runtime.getRuntime().exec("some_command");
【讨论】:
最好不要这样做,而是找到执行此操作的纯 Java API 函数。它更干净,更容易理解并且更不容易出错。这也是实现一次编写到处运行的 Java 的唯一方法。一旦你调用了 shell 命令,你就会被绑定到那个 shell。
在您的情况下,您正在寻找 java.io.File 类,特别是 mkdir 和 delete 方法。
【讨论】:
作为参考人们偶然发现这个问题并想知道为什么Runtime.getRuntime().exec("mkdir foo") 按照 Chris Dennett 的回答即使在合并环境时也不起作用,最可能的原因是您没有一个名为“mkdir”的程序你的系统。虽然大多数类 Unix 系统都有这个名称的程序,但它们并不是绝对必须有一个,Windows 也没有,因为在这两种情况下,shell 都会自行解释这个命令,而不是将它传递给外部程序。
要使其正常工作,请尝试使用 ...exec ("cmd /c mkdir foo") 用于 NT 系列 Windows(或 "command /c mkdir foo" 用于 Windows 95 系列),或 exec ("sh -c \"mkdir foo\"") 用于 Unix。
不存在独立于平台的方式来执行此任务的事实是更喜欢使用 Java API 来执行任务的另一个原因。
【讨论】:
在 Java API 中有用于此的方法,并且在 commons-io 中很好地包装了实现,从而进一步简化了流程。
http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html
【讨论】:
您好,同意不独立于平台的事实,只是为了测试我必须使用它的应用程序。 在我的情况下的解决方案 Runtime.getRuntime().exec("my_command_name") ; 因为不工作,我必须提供批处理/sh/可执行文件所在位置的完整路径 即:
Runtime.getRuntime().exec("/d/temp/bin/mybatfile");
【讨论】:
制作目录方法-
File dir = new File("path name");
boolean isCreated = dir.mkdir();
删除方法-
public boolean delete()
true if and only if the file or directory is successfully deleted; false otherwise
更多请参考以下链接-
https://docs.oracle.com/javase/8/docs/api/java/io/File.html
https://www.flowerbrackets.com/how-to-create-directory-java/
【讨论】: