Android 将assets中的文件复制到外置sdcard卡

assets文件夹中的文件的访问是通过

InputStream inputStream = context.getAssets().open("FileName");

列出assets中某个目录下的所有的文件及文件夹

String[] srcFiles = context.getAssets().list("assetsPath");

assets/folder/文件夹中所有的文件

String[] srcFiles = context.getAssets().list("folder");

将assets中某个文件夹的文件复制到外置sdcard中

核心代码如下:

package com.android.example.assets;import android.content.Context;import android.util.Log;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;public class Utils{    public static void doCopy(Context context, String assetsPath, String desPath) throws IOException {        String[] srcFiles = context.getAssets().list(assetsPath);//for directory        for (String srcFileName : srcFiles) {            String outFileName = desPath + File.separator + srcFileName;            String inFileName = assetsPath + File.separator + srcFileName;            if (assetsPath.equals("")) {// for first time                inFileName = srcFileName;            }            Log.e("tag","========= assets: "+ assetsPath+"  filename: "+srcFileName +" infile: "+inFileName+" outFile: "+outFileName);            try {                InputStream inputStream = context.getAssets().open(inFileName);                copyAndClose(inputStream, new FileOutputStream(outFileName));            } catch (IOException e) {//if directory fails exception                e.printStackTrace();                new File(outFileName).mkdir();                doCopy(context,inFileName, outFileName);            }        }    }    private static void closeQuietly(OutputStream out){        try{            if(out != null) out.close();;        }catch (IOException ex){            ex.printStackTrace();        }    }    private static void closeQuietly(InputStream is){        try{            if(is != null){                is.close();            }        }catch (IOException ex){            ex.printStackTrace();        }    }    private static void copyAndClose(InputStream is, OutputStream out) throws IOException{        copy(is,out);        closeQuietly(is);        closeQuietly(out);    }    private static void copy(InputStream is, OutputStream out) throws IOException{        byte[] buffer = new byte[1024];        int n = 0;        while(-1 != (n = is.read(buffer))){            out.write(buffer,0,n);        }    }}

工程源码

更多相关文章

  1. 文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互
  2. cordova3+sencha touch2.x 环境搭建
  3. android典型代码系列(十二)------删除某个文件夹里面的所有内容(
  4. Android(安卓)Studio 2.3使用CMake方式NDK入门
  5. Android添加新的视频格式--媒体库扫描
  6. android cocos2d-x libjson
  7. [Android]乐Pad开发准备
  8. Android(安卓)反编译APK文件
  9. Android(安卓)Studio 编译卡慢、卡顿的几种解决方案

随机推荐

  1. Android对话框 (AlertDialog & ProgressD
  2. Android(安卓)gradle配置
  3. Android直播开发之旅(9):OkCamera,Android
  4. Android 网络框架 Retrofit 源码解析
  5. 2019最新《Android开发全套学习教程》
  6. android重新签名APK文件
  7. 论Android Binder驱动在Framework中的重
  8. 关于Android(安卓)O 通知渠道总结
  9. android 查询电话号码,对中文进行排序[a-z
  10. unity在android真机上的调试