删除java中的符号链接

时间:2015-08-26 12:50:52

标签: java symlink

是否有任何api可以使用java删除符号链接。 Files.delete(路径)没有用。请发表您的建议。

3 个答案:

答案 0 :(得分:2)

Files.delete(Path)在符号链接上运行良好。您的代码中应该有另一个问题。

此代码示例有效(JAVA 8):

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
...
String symLinkName = "/some/path/to/symlink";
try {               
    if(Files.exists(Paths.get(symLinkName))) {              
        Files.delete(Paths.get(symLinkName));
    }
} catch (IOException e) {
    log.info("Cannot delete symbolic link " + symLinkName);
    e.printStackTrace();
}

请记住,符号链接是UNIX概念,在Windows上不存在

答案 1 :(得分:0)

找到符号链接的更多信息here。如果你不能删除链接,你可以使用Java中的ProcessBuilder - 类来完成它,并使用你的bash / cmd命令(取决于你使用过的系统)。

ProcessBuilder pb = new ProcessBuilder("<bash you use>", "rm", "<filepath>");
Process p = pb.start();

但是,你可以删除符号链接:

Files.delete("path");

目录必须为空。如果Path是符号链接,则删除该链接,而不是它所代表的目标。

答案 2 :(得分:0)

我会继续说,我认为

请记住,符号链接是UNIX概念,在Windows中不存在

不正确,至少不完全正确。 Windows确实具有符号和硬link的概念,这在某些方面可能与Unix概念有所不同。我可能完全错了。

但这不是我回答的重点,实际上我遇到了类似的问题,我无法删除实际上甚至不是符号链接的“符号链接”。我在Unix上创建了此符号链接,并将这些目录转移到Windows计算机上,并尝试使用Java NIO删除该“符号链接”,但由于java.nio.file.DirectoryNotEmptyException而失败。如果我按照上面的链接中的指示在Windows上创建符号链接,则Java一切正常。

我知道这是非常具体的情况,但这是我的2美分。

相关问题