我想在运行java程序时使用mkdir
和rmdir
等系统命令。
我该怎么做?
答案 0 :(得分:14)
为什么要使用命令行?仅供参考,有内置的与平台无关的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();
'新文件'在这里有点用词不当,它实际上并没有创建目录或文件。它正在创建一个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
变量。
答案 1 :(得分:4)
如前所述,您不应该为简单的文件管理执行此操作。但要提到它:Java API有一个名为Runtime的类,允许系统调用...例如:
Runtime.getRuntime().exec("some_command");
答案 2 :(得分:3)
最好的不是,而是找到执行它的纯Java API函数。它更清晰,更易于理解,更不容易出错。它也是执行Java编写的唯一方法。一旦调用shell命令,就会绑定到那个shell。
在您的情况下,您正在寻找java.io.File课程,特别是mkdir和delete方法。
答案 3 :(得分:3)
为了参考人们绊倒这个问题,并想知道为什么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来执行任务的原因。
答案 4 :(得分:1)
Java API中有一些方法,以及commons-io中包含得很好的实现,可以进一步简化流程。
http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html
答案 5 :(得分:0)
嗨同意不是平台独立的事实,只是为了测试我必须使用它的应用程序。 在我的情况下的解决方案 Runtime.getRuntime()。exec(“my_command_name”); 为了不工作,我必须提供批/ sh /可执行文件所在的完整路径 即:
调用Runtime.getRuntime()EXEC( “/ d /温度/ bin中/ mybatfile”);
答案 6 :(得分:0)
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
有关详情,请参阅以下链接 -
https://docs.oracle.com/javase/8/docs/api/java/io/File.html
http://www.flowerbrackets.com/create-directory-java-program/