Android 获取assets文件夹下面的文件路径

Android 获取assets文件夹下面的文件路径,第1张

用加载本地web资源文件暴力获取的方式:

 String path = "file:///android_asset/平舆.tile";

结果在这里不可行,在网上查询了很多资料,思路大致就是先把文件复制到缓存中,然后再获取文件的路径。代码如下所示:"平舆.tile"是assets文件夹下面的文件,我这里的文件路径是:我这里直接是一级目录,如果目录是多个层级,也只要用最终层级就可以了,比如我这里就是平舆.tile

String path=copyAssetGetFilePath("平舆.tile");

获取路径代码

private String copyAssetGetFilePath(String fileName) {
    try {
        File cacheDir = getContext().getCacheDir();
        if (!cacheDir.exists()) {
            cacheDir.mkdirs();
        }
        File outFile = new File(cacheDir, fileName);
        if (!outFile.exists()) {
            boolean res = outFile.createNewFile();
            if (!res) {
                return null;
            }
        } else {
            if (outFile.length() > 10) {//表示已经写入一次
                return outFile.getPath();
            }
        }
        InputStream is = getContext().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 outFile.getPath();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

 

最终可以把path处理成File;

File file = new File(path);

问题总算是解决了。

 

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存