3

我有一个严重的问题

我想使用带有运行时界面的 Java 类运行 Linux 命令,有一个命令可以创建一个名为“My Folder”的文件夹,并带有一个空格

创建 Unix 命令很容易: mkdir My\ Folder 或 mkdir "My Folder"

但是如何用 Java 翻译这个,我尝试了两个命令: Runtime.exec("mkdir My\ Folder") Runtime.exec("mkdir \"My Folder\"")

这是一个例子:

import java.io.IOException;
public class CreerDossier {
    public static void main(String[] args) throws IOException {
        Runtime runtime = Runtime.getRuntime();
        runtime.exec("mkdir My\\ Folder");
        runtime.exec("mkdir \"My Folder\"");
    }
}

但是还是不行

对于 runtime.exec("mkdir My\ Folder") 它创建两个文件夹 My\ 和 Folder 对于 runtime.exec("mkdir \"My Folder\"") 它还创建两个文件夹 "My and Folder"

有解决方案吗?

谢谢 !

4

3 回答 3

4

File.mkdir()使用它要容易得多

File dir = new File("My Folder");
dir.mkdir();
于 2013-02-16T23:09:44.750 回答
2

其他答案已经解释了如何在目录名称中放置空格。我想试着说服你不要这样做。

按照惯例,Linux 上的路径名中没有空格。当然文件系统允许这样做,依此类推。但这让 Linux 用户的生活变得尴尬:

  • 从命令提示符输入带有空格的路径名时,您始终必须记住引用它们或转义空格。

  • 在编写路径名存储在变量中的 shell 脚本时,您必须小心路径名中可能有 / 空格。如果你不这样做,脚本很可能会中断。

结合这些,你会发现你漂亮的目录名称中带有空格实际上是一个麻烦......或者更糟。

我的建议是重新设计您的系统以避免这种情况。要么首先不允许您的系统用户在名称中放置空格,要么(如果您必须支持这一点,因为这是一项要求)然后:

  • 使用 URL-style percent-encoding 之类的东西对文件名进行编码,这样空格字符就不会在文件系统的实际路径名中表示为空格,或者
  • 将用户提供的名称存储在数据库中。
于 2013-02-16T23:45:36.120 回答
1
runtime.exec(new String[] { "mkdir", "My Folder" });
于 2013-02-16T23:18:11.507 回答