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

Java 在Android中创建硬链接和符号链接,java,android,filesystems,symlink,hardlink,Java,Android,Filesystems,Symlink,Hardlink,我正在创建一个应用程序,我想在其中使用Android外部内存文件系统中的硬链接和符号链接。我试过使用这些命令 Os.link("oldpath", "newpath"); Os.link("oldpath", "newpath"); 但是,当我尝试此操作时,会出现以下错误: link failed: EPERM (Operation not permitted) 这使我认为您需要root访问权限,尽管我看到其他人也做过同样的事情,我不认为如果他们需要root,他们会有这些命令。有什么想法吗?

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

Os.link("oldpath", "newpath");
Os.link("oldpath", "newpath");
但是,当我尝试此操作时,会出现以下错误:

link failed: EPERM (Operation not permitted)

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

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

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

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

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

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

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


API 26还添加了链接权限(“硬”)和链接权限(“符号”),但我不知道如何使用它们。

您试图通过哪条路径创建硬链接。我想您应该检查一下从这里开始的步骤@KamilMahmood我正在尝试在外部服务器上创建硬链接storage@AshwinKudva你应该用更多的细节更新你的问题。那么我有没有办法制作一个硬链接或类似的东西供我使用,还是我的案子没有意义@你能澄清为什么最后一句是真的吗?您通常只需要在目录上使用rwx perm,在文件上使用rw。是因为您需要root才能访问任何非FAT32文件系统吗?@Michael您可以不使用root访问非FAT32文件系统。大多数情况下,
/data/data/com.yourapp/
位于非FAT32(ext4)文件系统上,但即使在目录中有
rwx
和文件中有
rw
之后,也无法在其中创建硬链接。