用加载本地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);

问题总算是解决了。

 

GitHub 加速计划 / ass / assets
184
19
下载
Ultralytics assets
最近提交(Master分支:2 个月前 )
969b5911 3 个月前
dcb30515 4 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐