This question already has answers here:
How to handle ~ in file paths
(5 个回答)
6年前关闭。
这是我删除文件夹的代码,下面的代码不会删除主文件夹下的下载目录。
但是,如果我提供完整的主路径,则此方法有效:
谁能告诉我我做错了什么。?
或通过像这样为命令行添加前缀来调用 shell
(5 个回答)
6年前关闭。
这是我删除文件夹的代码,下面的代码不会删除主文件夹下的下载目录。
import java.io.IOException;
public class tester1{
public static void main(String[] args) throws IOException {
System.out.println("here going to delete stuff..!!");
Runtime.getRuntime().exec("rm -rf ~/Downloads/2");
//deleteFile();
System.out.println("Deleted ..!!"); }
}
但是,如果我提供完整的主路径,则此方法有效:
import java.io.IOException;
public class tester1{
public static void main(String[] args) throws IOException {
System.out.println("here going to delete stuff..!!");
Runtime.getRuntime().exec("rm -rf /home/rah/Downloads/2");
//deleteFile();
System.out.println("Deleted ..!!");
}
}
谁能告诉我我做错了什么。?
最佳答案
波浪号 ( ~
) 由 shell 展开。当您调用 exec
时,不会调用 shell,而是立即调用 rm
二进制文件,因此不会扩展波浪号。通配符和环境变量也不是。
有两种解决方案。要么像这样自己替换波浪号:
String path = "~/Downloads/2".replace("~", System.getProperty("user.home"))
或通过像这样为命令行添加前缀来调用 shell
Runtime.getRuntime().exec("sh -c rm -rf ~/Downloads/2");
关于java - rm -rf 不适用于 Java 运行时中的 home 波浪号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26859490/
10-12 02:01