Android 将assets目录下指定文件复制到手机内部存储
程序员文章站
2024-03-09 09:55:59
...
这是为了实现一个猥琐的需求做的猥琐操作(目标需求:终端无网络情况下,使用XX离线地图功能)
离线地图包提前下载好,不改变目录结构,直接将离线地图包复制到源码包assets目录下,apk启动时将assets下的离线地图资源复制到手机存储,按照地图SDK开发规范接入后,即可实现正常使用离线地图功能
代码如下:
public static void copyAssets(Context context, String oldPath, String newPath) {
try {
String fileNames[] = context.getAssets().list(oldPath);// 获取assets目录下的所有文件及目录名
if (fileNames.length > 0) {// 如果是目录
File file = new File(newPath);
file.mkdirs();// 如果文件夹不存在,则递归
for (String fileName : fileNames) {
CopyAssets(context, oldPath + "/" + fileName, newPath + "/" + fileName);
}
} else {// 如果是文件
InputStream is = context.getAssets().open(oldPath);
FileOutputStream fos = new FileOutputStream(new File(newPath));
byte[] buffer = new byte[1024];
int byteCount;
while ((byteCount = is.read(buffer)) != -1) {// 循环从输入流读取
// buffer字节
fos.write(buffer, 0, byteCount);// 将读取的输入流写入到输出流
}
fos.flush();// 刷新缓冲区
is.close();
fos.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}