首页 > 系统 > Android > 正文

Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法

2019-10-24 20:24:16
字体:
来源:转载
供稿:网友
这篇文章主要介绍了Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法,涉及Android针对文件与目录的遍历及I/O操作相关技巧,需要的朋友可以参考下
 

本文实例讲述了Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法。分享给大家供大家参考,具体如下:

private void CopyAssets(String assetDir, String dir) {    String[] files;    try {      // 获得Assets一共有几多文件      files = this.getResources().getAssets().list(assetDir);    } catch (IOException e1) {      return;    }    File mWorkingPath = new File(dir);    // 如果文件路径不存在    if (!mWorkingPath.exists()) {      // 创建文件夹      if (!mWorkingPath.mkdirs()) {        // 文件夹创建不成功时调用      }    }    for (int i = 0; i < files.length; i++) {      try {        // 获得每个文件的名字        String fileName = files[i];        // 根据路径判断是文件夹还是文件        if (!fileName.contains(".")) {          if (0 == assetDir.length()) {            CopyAssets(fileName, dir + fileName + "/");          } else {            CopyAssets(assetDir + "/" + fileName, dir + "/"                + fileName + "/");          }          continue;        }        File outFile = new File(mWorkingPath, fileName);        if (outFile.exists())          outFile.delete();        InputStream in = null;        if (0 != assetDir.length())          in = getAssets().open(assetDir + "/" + fileName);        else          in = getAssets().open(fileName);        OutputStream out = new FileOutputStream(outFile);        // Transfer bytes from in to out        byte[] buf = new byte[1024];        int len;        while ((len = in.read(buf)) > 0) {          out.write(buf, 0, len);        }        in.close();        out.close();      } catch (FileNotFoundException e) {        e.printStackTrace();      }      catch (IOException e) {        e.printStackTrace();      }    }}
 


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表