解决Assert目录下无法拷贝超大文件到SD卡的问题

 Assert 目录文件拷贝时候, Android 有个规定就是文件大小不能操作1M, 不然会抛文件太大的错误. 解决办法如下. 将文件拷贝到类文件下:

 代码示意如下:
 private static boolean copyFile(Context ctx, String filename, String des) {
  InputStream instream = null;
  try {
   if (filename.contains("TUIRes.ndt")) { //这个文件超过1M
    instream = XmlFile.class.getResourceAsStream("TUIRes.ndt");
   } else if (filename.contains("TUpdateRes.ndt")) {
    instream = XmlFile.class.getResourceAsStream("TUpdateRes.ndt");
   } else {
    instream = ctx.getAssets().open(filename);
   }

   copyFile(des, instream);
   return true;
  } catch (Exception e) {
   return false;
  }
 }

 private static void copyFile(String fileToPath, InputStream in)
   throws Exception {
  OutputStream out = null;
  try {

   out = new FileOutputStream(fileToPath);
   byte[] buffer = new byte[1024];
   while (true) {
    int ins = in.read(buffer);
    if (ins == -1) {
     break;
    }

    out.write(buffer, 0, ins);
   }
  } finally {
   if (in != null) {
    in.close();
   }
   if (out != null) {
    out.flush();
    out.close();
   }
  }
 }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值