首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将符号链接文件夹转换为硬链接文件夹

将符号链接文件夹转换为硬链接文件夹
EN

Stack Overflow用户
提问于 2016-12-05 15:32:36
回答 2查看 265关注 0票数 1

我创建了一个包含文件列表的symbolic文件夹。有没有办法用java把符号链接转换成HardLink?

EN

回答 2

Stack Overflow用户

发布于 2016-12-05 15:53:43

要使用java创建硬链接,您可以使用:

代码语言:javascript
复制
Path newLink = ...;
Path existingFile = ...;
try {
    Files.createLink(newLink, existingFile);
} catch (IOException x) {
   System.err.println(x);
} catch (UnsupportedOperationException x) {
   // Some file systems do not
   // support adding an existing
   // file to a directory.
   System.err.println(x);
}

因此,在本例中,newLink应该是您创建的oldSymbolicLink,而existingFile代表它的目标。

要获取符号链接的目标,可以使用

代码语言:javascript
复制
Files.readSymbolicLink(oldSymbolicLink));

甲骨文文档: Links, Symbolic or Otherwise

票数 0
EN

Stack Overflow用户

发布于 2016-12-05 16:51:14

正如其他人指出的那样,Java doc表示不能创建目录上的硬链接。所以,我不会告诉你如何创建到目录的硬链接,而是解释为什么你不能在目录上创建硬链接。

当您尝试遍历目录树时,目录上的硬链接可能会导致循环。

例如,如果您有一个目录/foo/bar和一个指向../bar的符号链接/foo/bar/baz,当您尝试遍历此树时,您将陷入无限循环。

代码语言:javascript
复制
/foo/
/foo/bar
/foo/bar/baz
/foo/bar/baz/bar
/foo/bar/baz/bar/baz
...

现在,如果baz是到../bar的符号链接,那么可以通过使用unlink(2)系统调用取消链接baz来修复它(因为取消链接不遵循符号链接)。然而,如果baz是一个硬链接,那么它将会有很多harder (没有双关语)来修复这个问题。在“Unix环境中的高级编程”一书中,Stephen Rago指出,Rich Stephen在尝试这个实验时损坏了他的文件系统( fsck无法恢复它)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40969248

复制
相关文章

相似问题

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