Android studio无法获取Asserts文件,通过内置sd卡来获取路径

原创 2016年08月30日 10:12:58

     项目中,需要读取一个配置文件,来加载对应的后台服务,但文件放在asserts文件夹下,百度了一下,是无法获取到绝对路径的,这样就势必要修改整个的服务结构和方法,所以采用了一个折中的方式,先将文件放在工程的asserts文件夹内,然后代码中先复制到手机内置的sd卡中,这样就能知道一个绝对路径.代码如下:

    注:asserts中的文件路径无法获取到绝对路径,是因为这个文件并没有打包到apk中,所以自然无法获取,只能通过别的方式,折中一下.


    1.新建一个工具类:将asserts文件复制到手机内置sd卡还有获取内置sd卡文件绝对路径,如下:

   /**
     * 由于assets文件夹无法访问绝对路径,所以需要先复制到sd卡中,然后拿到绝对路径
     *
     * @author
     * @createTime 2016/8/30 8:55
     */
    public static void copyBigDataToSD(String strOutFileName,Activity activity) throws IOException {
        InputStream myInput;
        OutputStream myOutput = new FileOutputStream(strOutFileName);
        myInput = activity.getAssets().open("CQTS.obj");
        byte[] buffer = new byte[1024];
        int length = myInput.read(buffer);
        while (length > 0) {
            myOutput.write(buffer, 0, length);
            length = myInput.read(buffer);
        }

        myOutput.flush();
        myInput.close();
        myOutput.close();
    }

    /**
     * 获取内置sd卡中CQTS.obj的绝对路径
     * @author qiulinhe
     * @createTime 2016/8/30 10:02
     */
    public static String getSDPath() {
        File sdDir = null;
        boolean sdCardExist = Environment.getExternalStorageState()
                .equals(android.os.Environment.MEDIA_MOUNTED);   //判断sd卡是否存在


        if (sdCardExist)      //如果SD卡存在,则获取跟目录
        {
            sdDir = Environment.getExternalStorageDirectory();//获取跟目录
        }
        return sdDir.toString();

    }
     2.注意要添加以下的权限:
  <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <!-- 在SD卡中创建与删除文件权限-->
    <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS"/>

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

     如果没有添加权限,就会报错:android /mnt/sdcard/test/CQTS.obj: open failed: ENOENT (No such file or dire).我的这种方式也是参考别的博客,感谢那位博主,具体的链接是:http://www.cnblogs.com/wainiwann/p/3274386.html,要注意的是他的路径是sd卡/test,你需要新建一个文件夹,或者直接放在sd卡下,否则会报错,告诉后面的人而已.有问题可以交流.我想如果文件放在sd卡被用户删了,肯定会报错,所以这一点后面再做处理吧.
版权声明:本文为博主原创文章,未经博主允许不得转载。博客地址:http://blog.csdn.net/nihaoqiulinhe

Android 读取SD卡中文件以及内存使用情况

android.os下的StatFs类主要用来获取文件系统的状态,能够获取sd卡的大小和剩余空间,例如通过实例化一个StatFs对象 new StatFs(path.getPath())把SD卡根目录...
  • WX_LYB
  • WX_LYB
  • 2016年09月22日 20:22
  • 1615

AndroidStudio——数据存储之SD卡存储

AndroidStudio——数据存储之SD卡存储
  • qq_35160309
  • qq_35160309
  • 2016年08月15日 14:00
  • 1152

Android手机内置SD卡路径的获取

最近,在做一个照相机相关的应用,项目都已经收尾了,静待领导检阅。 但领导一运行,应用马上蹦了, 我的命呀,倒霉! 但这就是程序猿的命~~ 原来就只有一台样机出现了问题,深究是关于文件存储的问题。下面就...
  • wxx614817
  • wxx614817
  • 2016年01月19日 16:07
  • 3278

如何正确获得Android内外SD卡路径

如何正确获得Android内外SD卡路径 原文路径:http://blog.fidroid.com/post/android/ru-he-zheng-que-huo-de-androidnei-wa...
  • namePeng
  • namePeng
  • 2015年12月07日 15:30
  • 2662

android 访问data目录、6.0模拟器读写sdcard、相关sdcard路径

转载:http://blog.csdn.net/yangzl2008/article/details/8498196使用adb命令时的错误如果直接使用adb命令会产生以下错误:127|shell@an...
  • xx326664162
  • xx326664162
  • 2016年08月20日 10:44
  • 3962

如何正确获得Android内外SD卡路径

忘了这篇文章是在哪里看到了,当时就copy保存了下来,今天转载出来下。 外置sd卡路径,也许很多同学在平时的工作中并不会用到,因为现在很多机型都不支持外置sd卡(这也是Google目标),所以并不用考...
  • u010663758
  • u010663758
  • 2016年05月03日 22:31
  • 7445

为Android虚拟机创建SDCard

 一、首先创建SDCARD   我创建的sdcard名为:sdcard.img(名字随便取,以img后缀名结束)。 进入DOS  指向  目录D:\Program File\AndroidS...
  • LANGXINLEN
  • LANGXINLEN
  • 2015年11月25日 15:09
  • 2672

android获取内置和外置SD卡路径

本文介绍了在android真机环境下如何获取内置和外置SD卡路径。
  • chadeltu
  • chadeltu
  • 2015年02月11日 17:19
  • 33396

Anroid获取内置外置SD卡路径以及读写测试

最近项目有一个新需求是要把应用的大文件下载到外置SD卡,自己研究了一下安卓如何获取内置和外置SD卡路径以及进行文件读写,以下是自己的总结。 在网上找的方法都感觉不太好,比较乱,所以自己就查了一下安卓的...
  • qq_27102463
  • qq_27102463
  • 2016年06月12日 15:41
  • 2356

在Android Studio中读取Assets目录下文件

参考网址 1、http://www.ithao123.cn/content-8691639.html 2、http://blog.csdn.net/shifuhetudi/article/deta...
  • qq_28746251
  • qq_28746251
  • 2016年08月06日 21:47
  • 2010
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android studio无法获取Asserts文件,通过内置sd卡来获取路径
举报原因:
原因补充:

(最多只允许输入30个字)