Creating Hardlinks and Symlinks in Android

大兔子大兔子 提交于 2021-01-26 19:24:52

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!