首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java执行路径名中包含空格的命令

Java执行路径名中包含空格的命令
EN

Stack Overflow用户
提问于 2011-02-07 07:25:13
回答 4查看 24.1K关注 0票数 17

如何执行路径名中包含空格的Java系统(shell)命令?

我试过加引号和反斜杠(),但不起作用。

代码语言:javascript
运行
复制
ln -s "dir1/dir2" "my\ dir/dir2"
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-07 07:34:33

到目前为止,最可靠的方法是使用[Runtime.exec(String[]命令)](http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Runtime.html#exec(java.lang.String[]%29)

如果您使用Runtime.exec(String command),Java只在空格上拆分命令。

在不进一步修改字符类别的情况下,使用调用

StringTokenizer (命令)创建的新命令将命令字符串分解为标记。然后,由记号赋予器产生的记号以相同的顺序放置在新的字符串数组cmdarray中。

另请参阅g++: File not found

或者使用ProcessBuilder,如下所示:

代码语言:javascript
运行
复制
ProcessBuilder pb = new ProcessBuilder("ln", "-s", "dir1/dir2", "my dir/dir2");
Process p = pb.start();
票数 26
EN

Stack Overflow用户

发布于 2011-02-07 07:36:34

你真的需要在外壳中执行它吗(例如,你需要外壳扩展~*之类的东西吗)?如果没有,您可以直接调用ln

代码语言:javascript
运行
复制
Process p =
    Runtime.getRuntime()
    .exec(new String[]{"/bin/ln","-s","dir1/dir2", "my\\ dir/dir2"});

如果你真的需要一个shell,试试这个(这可能需要一些调整,这取决于shell如何处理引用):

代码语言:javascript
运行
复制
Process p =
    Runtime.getRuntime()
    .exec(new String[]{"/bin/sh", "-c", "ln -s \"dir1/dir2\" \"my\\ dir/dir2\""});

编辑:

我的印象是第二条路径中有一个字面上的反斜杠。如果它不应该从上面的字符串文字中删除\\

票数 7
EN

Stack Overflow用户

发布于 2012-03-26 21:43:00

这些对Lion都不起作用。但是,下面的代码确实可以工作,并且向后兼容Tiger。

代码语言:javascript
运行
复制
Runtime.getRuntime().exec(new String[]{"/bin/bash","-c","/path/to/file/space*init"});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4916918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档