如何在java程序中使用mkdir和rmdir命令

如何在java程序中使用mkdir和rmdir命令,java,command-line,cmd,Java,Command Line,Cmd,我想在运行java程序时使用系统命令,如mkdir和rmdir 我该怎么做?为什么要使用命令行?仅供参考,有内置的独立于平台的文件类 生成目录: new File("dir path").mkdir(); new File("dir path").delete(); 删除目录: new File("dir path").mkdir(); new File("dir path").delete(); 这里的“新文件”有点用词不当,它实际上并不是在创建目录或文件。它创建了一个Java

我想在运行java程序时使用系统命令,如
mkdir
rmdir


我该怎么做?

为什么要使用命令行?仅供参考,有内置的独立于平台的
文件


生成目录:

new File("dir path").mkdir();
new File("dir path").delete(); 
删除目录:

new File("dir path").mkdir();
new File("dir path").delete(); 
这里的“新文件”有点用词不当,它实际上并不是在创建目录或文件。它创建了一个Java资源钩子,您可以使用它来查询或操作现有的文件系统资源,或者根据您的请求创建一个新的文件系统资源。否则,请使用
Runtime.getRuntime().exec(“此处为命令行”)
来使用命令行操作(不建议!!)

编辑:整理出问题海报存在的问题:

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函数。它更干净,更容易理解,更不容易出错。这也是实现Java的唯一方法,即一次编写,到处运行。调用shell命令后,您将绑定到该shell


在您的例子中,您正在寻找类,特别是和方法。

Java API中有用于此的方法,commons io中包装良好的实现进一步简化了过程


正如前面提到的,您不应该为了简单的文件管理而这样做。但是要提到的是:JavaAPI有一个名为的类,它允许系统调用。。。例如:

Runtime.getRuntime().exec("some_command");

对于那些无意中发现这个问题并想知道为什么
Runtime.getRuntime().exec(“mkdir foo”)
即使按照Chris Dennett的回答合并环境也不起作用的人来说,最可能的原因是您的系统上没有名为“mkdir”的程序。虽然大多数类Unix系统都有一个同名程序,但它们并不一定要有一个,Windows也没有,因为在这两种情况下,shell都会自行解释此命令,而不是将其传递给外部程序

要使其正常工作,请尝试对NT系列Windows使用…
exec(“cmd/c mkdir foo”)
(或对Windows 95系列使用
“command/c mkdir foo”
),或对Unix使用
exec(“sh-c\“mkdir foo\”)


没有独立于平台的方法来完成这项任务,这是另一个喜欢使用Java API来执行任务的原因。

我同意这样一个事实,即不是独立于平台的,只是为了测试我不得不使用的应用程序。 我的案例中的解决方案是 Runtime.getRuntime().exec(“我的命令名”); 因为无法工作,我必须给出batch/sh/可执行文件所在的完整路径 即:


Runtime.getRuntime().exec(“/d/temp/bin/mybatfile”)

makedirectory方法-

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
删除方法-

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
有关更多信息,请参阅以下链接-


thnxs,这个运行时对象就是我想要的。但是当我运行这段代码时:Runtime.getRuntime().exec(“mkdir blah”);抛出异常,java.io.IOException:无法运行程序“mkdir”:CreateProcess error=2,系统找不到指定的文件