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

2022-09-03 14:57:17

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

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

但是,当我尝试此操作时,我收到此错误:

link failed: EPERM (Operation not permitted)

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


答案 1

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

易胚芽包含旧路径和新路径的文件系统不支持创建硬链接。

您可以在此处阅读有关链接系统调用的更多信息

此外,您不能准确地伪造FAT32上的硬链接或软链接。还要注意,要在Android中创建硬链接,需要root权限。


答案 2

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

安卓棒棒糖(API 21) 为硬链接添加 Os.link

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


推荐