123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- package com.xugame.gameconsole.util;
- import android.content.Context;
- import android.os.Environment;
- import android.os.Handler;
- import android.os.Looper;
- import android.os.Message;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- public class AssetsUtils {
- private static AssetsUtils instance;
- private static final int SUCCESS = 1;
- private static final int FAILED = 0;
- private Context context;
- private FileOperateCallback callback;
- private volatile boolean isSuccess=false;
- private String errorStr;
- public static AssetsUtils getInstance(Context context) {
- if (instance == null)
- instance = new AssetsUtils(context);
- return instance;
- }
- private AssetsUtils(Context context) {
- this.context = context;
- }
- private Handler handler = new Handler(Looper.getMainLooper()) {
- @Override
- public void handleMessage(Message msg) {
- super.handleMessage(msg);
- if (callback != null) {
- if (msg.what == SUCCESS) {
- callback.onSuccess();
- }
- if (msg.what == FAILED) {
- callback.onFailed(msg.obj.toString());
- }
- }
- }
- };
- public AssetsUtils copyAssetsToSD(final String srcPath, final String sdPath) {
- new Thread(new Runnable() {
- @Override
- public void run() {
- copyAssetsToDst(context, srcPath, sdPath);
- if (isSuccess)
- handler.obtainMessage(SUCCESS).sendToTarget();
- else
- handler.obtainMessage(FAILED, errorStr).sendToTarget();
- }
- }).start();
- return this;
- }
- public void setFileOperateCallback(FileOperateCallback callback) {
- this.callback = callback;
- }
- // private void copyAssetsAll(Context context,String dstPath){
- // String fileNames[] =context.getAssets().getLocales();
- // for (String temp:fileNames){
- // DebugUtil.i(TAG,""+temp);
- // }
- // }
- private void copyAssetsToDst(Context context, String srcPath, String dstPath) {
- try {
- String fileNames[] = context.getAssets().list(srcPath);
- if (fileNames.length > 0) {
- File file = new File(Environment.getExternalStorageDirectory(), dstPath);
- if (!file.exists()) file.mkdirs();
- for (String fileName : fileNames) {
- if (!srcPath.equals("")) { // assets 文件夹下的目录
- copyAssetsToDst(context, srcPath + File.separator + fileName, dstPath + File.separator + fileName);
- } else { // assets 文件夹
- copyAssetsToDst(context, fileName, dstPath + File.separator + fileName);
- }
- }
- } else {
- File outFile = new File(Environment.getExternalStorageDirectory(), dstPath);
- InputStream is = context.getAssets().open(srcPath);
- 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();
- }
- isSuccess = true;
- } catch (Exception e) {
- e.printStackTrace();
- errorStr = e.getMessage();
- isSuccess = false;
- }
- }
- public interface FileOperateCallback {
- void onSuccess();
- void onFailed(String error);
- }
- }
|