Java-Android-在应用程序中创建符号链接

Java-Android-在应用程序中创建符号链接,第1张

概述我想在我的应用中以编程方式创建符号链接.Android(4.4)是否可能?在Java中,我们可以使用:PathnewLink=...;Pathtarget=...;try{Files.createSymbolicLink(newLink,target);}catch(IOExceptionx){System.err.println(x);}catch(UnsupportedOperationEx

我想在我的应用中以编程方式创建符号链接. Android(4.4)是否可能?

在Java中,我们可以使用:

Path newlink = ...;Path target = ...;try {    files.createSymboliclink(newlink, target);} catch (IOException x) {    System.err.println(x);} catch (UnsupportedOperationException x) {    // Some file systems do not support symbolic links.    System.err.println(x);}

从java.nio.file但我应该在AndroID中使用什么?

https://docs.oracle.com/javase/tutorial/essential/io/links.html

编辑:

我使用反射/本机代码/OS.symlink()方法进行了测试,但没有任何效果.我总是收到不允许的 *** 作(EPERM).我认为您必须具有root权限才能创建符号链接.

问题可能出在/ mnt / sdcard是包装/ data / media / xxx的FUSE填充程序.所以我开始使用/ data / media / xxx,但是我总是被拒绝

我认为root权限存在问题.

解决方法:

这是一个对我有用的解决方案,如果成功则返回true:

public static boolean createSymlink(String symlinkfilePath, String originalfilePath) {    try {        if (VERSION.SDK_INT >= VERSION_CODES.LolliPOP) {            Os.symlink(originalfilePath, symlinkfilePath);            return true;        }        final Class<?> libcore = Class.forname("libcore.io.libcore");        final java.lang.reflect.FIEld fOs = libcore.getDeclaredFIEld("os");        fOs.setAccessible(true);        final Object os = fOs.get(null);        final java.lang.reflect.Method method = os.getClass().getmethod("symlink", String.class, String.class);        method.invoke(os, originalfilePath, symlinkfilePath);        return true;    } catch (Exception e) {        e.printstacktrace();    }    return false;}

或在科特林:

companion object {    @JvmStatic    fun createSymlink(symlinkfilePath: String, originalfilePath: String): Boolean {        try {            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LolliPOP) {                Os.symlink(originalfilePath, symlinkfilePath)                return true            }            val libcore = Class.forname("libcore.io.libcore")            val fOs = libcore.getDeclaredFIEld("os")            fOs.isAccessible = true            val os = fOs.get(null)            val method = os.javaClass.getmethod("symlink", String::class.java, String::class.java)            method.invoke(os, originalfilePath, symlinkfilePath)            return true        } catch (e: Exception) {            e.printstacktrace()        }        return false    }}
总结

以上是内存溢出为你收集整理的Java-Android-在应用程序中创建符号链接全部内容,希望文章能够帮你解决Java-Android-在应用程序中创建符号链接所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1094785.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存