我正在创建一个应用程序,我想在Android外部内存文件系统中使用硬链接和符号链接。我尝试过使用命令
Os.link("oldpath", "newpath");
Os.link("oldpath", "newpath");
然而,当我尝试这个时,我收到了这个错误:
link failed: EPERM (Operation not permitted)
这让我觉得你需要root访问权限,虽然我已经看到其他人做同样的事情,但我不认为如果他们需要root,他们会有这些命令。有什么想法吗?
答案 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”),但我不知道如何使用它们。