亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Android獲取assets文件路徑

標簽:
Android

我们有时候需要放置一些资源例如json,字体,视频,音频以及其他格式的资源。为了保证这些资源不被编译,以便于我们在代码中可以正常使用,我们可以放置到assets文件夹下。这个文件夹在哪呢?看下图,Android Studio新建一个项目是没有这个文件夹的,你可以在需要的时候新建这个文件夹。

这里写图片描述

我们如何使用这些文件呢?如何使用下面这一篇博客说的很详细,加载网页读取文本图片播放视频等等
https://blog.csdn.net/greathfs/article/details/52123984

但是有时候我们需要的是获取文件的路径,file:///android_asset/data.xx貌似并不是可以使用的路径,这时候可以曲线救国,我们先把文件copy到缓存文件夹中,然后就可以拿到路径了

/**
 * 将asset文件写入缓存
 */private boolean copyAssetAndWrite(String fileName){    try {
        File cacheDir=getCacheDir();        if (!cacheDir.exists()){
            cacheDir.mkdirs();
        }
        File outFile =new File(cacheDir,fileName);        if (!outFile.exists()){            boolean res=outFile.createNewFile();            if (!res){                return false;
            }
        }else {            if (outFile.length()>10){//表示已经写入一次
                return true;
            }
        }
        InputStream is=getAssets().open(fileName);
        FileOutputStream fos = new FileOutputStream(outFile);        byte[] buffer = new byte[1024];        int byteCount;        while ((byteCount = is.read(buffer)) != -1) {
            fos.write(buffer, 0, byteCount);
        }
        fos.flush();
        is.close();
        fos.close();        return true;
    } catch (IOException e) {
        e.printStackTrace();
    }    return false;
}

拿的时候如何拿呢?

File dataFile=new File(getCacheDir(),fileName);Log.d(TAG,"filePath:" + dataFile.getAbsolutePath());

注意点:
1,Android中文件copy操作要放置工作线程中避免卡顿和anr
2,如果你特殊需要,把文件copy到外部存储需要申请权限

原文出处

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消