用加载本地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);
问题总算是解决了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)