【问题标题】:How to use mkdir and rmdir commands in a java program如何在 java 程序中使用 mkdir 和 rmdir 命令
【发布时间】:2011-02-11 05:34:42
【问题描述】:

我想在运行 java 程序时使用像 mkdirrmdir 这样的系统命令。

我该怎么做?

【问题讨论】:

    标签: java command-line cmd


    【解决方案1】:

    为什么要使用命令行?仅供参考,有内置的独立于平台的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 变量。

    【讨论】:

    • thnxs,这个运行时对象就是我要找的。但是当我运行这段代码时: Runtime.getRuntime().exec("mkdir blah");抛出异常,java.io.IOException: Cannot run program "mkdir": CreateProcess error=2, The system cannot find the file specified
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      最好不要这样做,而是找到执行此操作的纯 Java API 函数。它更干净,更容易理解并且更不容易出错。这也是实现一次编写到处运行的 Java 的唯一方法。一旦你调用了 shell 命令,你就会被绑定到那个 shell。

      在您的情况下,您正在寻找 java.io.File 类,特别是 mkdirdelete 方法。

      【讨论】:

        【解决方案4】:

        作为参考人们偶然发现这个问题并想知道为什么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 来执行任务的另一个原因。

        【讨论】:

          【解决方案5】:

          在 Java API 中有用于此的方法,并且在 commons-io 中很好地包装了实现,从而进一步简化了流程。

          http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html

          【讨论】:

            【解决方案6】:

            您好,同意不独立于平台的事实,只是为了测试我必须使用它的应用程序。 在我的情况下的解决方案 Runtime.getRuntime().exec("my_command_name") ; 因为不工作,我必须提供批处理/sh/可执行文件所在位置的完整路径 即:

            Runtime.getRuntime().exec("/d/temp/bin/mybatfile");

            【讨论】:

              【解决方案7】:

              制作目录方法-

              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/

              【讨论】:

                最近更新 更多