在Android中创建硬链接和符号链接

时间:2017-07-04 21:04:14

标签: java android filesystems symlink hardlink

我正在创建一个应用程序,我想在Android外部内存文件系统中使用硬链接和符号链接。我尝试过使用命令

Os.link("oldpath", "newpath");
Os.link("oldpath", "newpath");

然而,当我尝试这个时,我收到了这个错误:

link failed: EPERM (Operation not permitted)

这让我觉得你需要root访问权限,虽然我已经看到其他人做同样的事情,但我不认为如果他们需要root,他们会有这些命令。有什么想法吗?

2 个答案:

答案 0 :(得分:12)

调用Os.link失败,因为Android默认使用FAT32文件系统进行外部存储。 FAT32文件系统不支持硬链接和软链接,这就是您不允许操作错误的原因。

  

EPERM 包含oldpath和newpath的文件系统不支持                 创建硬链接。

您可以阅读有关链接系统调用here

的更多信息

此外,您无法准确伪造FAT32上的硬链接或软链接。另请注意,在Android中创建硬链接需要root权限。

答案 1 :(得分:0)

android Oreo(API 26)添加Files.createLink和FileSystemProvider.createLink进行硬链接。

android lollipop(API 21)添加Os.link进行硬链接

API 26还添加了LinkPermission(“ hard”)和LinkPermission(“ symbolic”),但我不知道如何使用它们。