[英]Deleting a symbolic link in java
是否有任何 api 可用于使用 java.ini 删除符号链接? Files.delete(Path) 没有解决。请发表您的建议。
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 上不存在
我会继续说我认为
请记住,符号链接是一个 UNIX 概念,在 Windows 上不存在
不正确,至少不完全正确。 Windows 确实有符号和硬链接的概念,这可能在某些部分与 Unix 概念有所不同。 我可能完全错了。
但这不是我回复的重点,我实际上遇到了同样的问题,我无法删除“符号链接”,实际上它甚至不是符号链接。 我在 Unix 上创建了这个符号链接,并将这些目录转移到 Windows 机器上,并试图用 Java NIO 删除那个“符号链接”,但它失败了java.nio.file.DirectoryNotEmptyException
。 如果我按照上面链接中的说明在 Windows 上创建符号链接,那么在 Java 中一切正常。
我知道这是非常具体的情况,但这是我的 2 美分。
可以在此处找到有关符号链接的更多信息。 如果您无法删除链接,您可以使用 Java 中的ProcessBuilder
类来完成,并使用您的 bash/cmd-command(取决于您使用的系统)进行尝试。
ProcessBuilder pb = new ProcessBuilder("<bash you use>", "rm", "<filepath>");
Process p = pb.start();
但通常你可以删除符号链接:
Files.delete("path");
该目录必须为空。 如果 Path 是符号链接,则删除该链接而不是它所代表的目标。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.