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

Creating Hardlinks and Symlinks in Android

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

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

但是,当我尝试这个时,我得到了这个错误:

link failed: EPERM (Operation not permitted)

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

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

EPERM The filesystem containing oldpath and newpath does not support the creation of hard links.

您可以阅读更多关于link系统调用的信息here

此外,您无法在 FAT32 上准确伪造硬 links 或软 links。还要注意,在 Android 中创建硬 link 需要 root 权限。

android Oreo(API 26) 添加 Files.createLink 和 FileSystemProvider.createLink 硬 link.

android 棒棒糖(API 21) 添加 Os.link 硬 link

API 26还添加了LinkPermission("hard")和LinkPermission("symbolic"),但是不知道怎么用