问题
I am creating an app in which I would like to make use of hardlinks and symlinks in the Android external memory filesystem. I have tried using the commands
Os.link("oldpath", "newpath");
Os.link("oldpath", "newpath");
However, when I try this, I get this error:
link failed: EPERM (Operation not permitted)
This makes me think that you need root access, although I have seen other people do this same thing, and I would not think that they would have these commands if they needed root. Any ideas?
回答1:
Call to Os.link is failing because Android uses FAT32 file system by default for external storage. FAT32 file system does not support hard links and soft links that is why you are getting operation not permitted error.
EPERM The filesystem containing oldpath and newpath does not support the creation of hard links.
You can read more information about link system call here
Furthermore you cannot fake hard links or soft links on FAT32 accurately. And also note that for creating hard link in Android requires root permission.
回答2:
android Oreo(API 26) add Files.createLink and FileSystemProvider.createLink for hard link.
android lollipop(API 21) add Os.link for hard link
API 26 also add LinkPermission("hard") and LinkPermission("symbolic"), but I do not know how to use them.
来源:https://stackoverflow.com/questions/44913985/creating-hardlinks-and-symlinks-in-android