Android 递归实现assets拷贝到sd卡
来源:互联网 发布:北航网络教育官网 编辑:程序博客网 时间:2024/05/16 09:46
直接开始正文吧。。。。
效果如下:
先来看看资产目录。
首先要添加权限,这是毋庸置疑的。。。
layout布局文件,这就没什么看的了,就两个按钮。
下面是一些初始化的操作。。。
剩下的就不做介绍了,直接贴代码,例子也是比较简单。。。
package com.itxwy.a28_jsoupdemo;import android.content.Context;import android.content.res.AssetManager;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Context mContext = null;//获得上下文 private String mSDCardUrl = null;//sd卡的路径 private AssetManager mAm = null;//资产目录管理器 private String mIconFont = "iconfont";//资产目录地址 private Button mCopyBtn = null,mDelBtn = null;//拷贝按钮,删除按钮 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init(){ this.mContext = this; mSDCardUrl = Environment.getExternalStorageDirectory().toString();//拿到SD卡的路径 mAm = getAssets();//初始化资产目录管理器 mCopyBtn = (Button) findViewById(R.id.id_file_copy); mDelBtn = (Button) findViewById(R.id.id_file_del); mCopyBtn.setOnClickListener(this); mDelBtn.setOnClickListener(this); //创建跟目录 mSDCardUrl = mSDCardUrl+"/"+"iconfont"; File file = new File(mSDCardUrl); if(!file.exists()){ file.mkdir(); } } @Override public void onClick(View v) { switch (v.getId()){ case R.id.id_file_copy:{ getAssetToSD(mSDCardUrl,mIconFont); break; } case R.id.id_file_del:{ delFile(mSDCardUrl); break; } default:{ Toast.makeText(mContext,"执行错误",Toast.LENGTH_LONG).show(); break; } } } /** * 。。。 * @param url SD卡路径 * @param assetsName 资产目录的文件夹名称 */ private void getAssetToSD(String url,String assetsName){ try { String[] fileContents = mAm.list(assetsName); for (int i = 0; i <fileContents.length ; i++) { if(mAm.list(assetsName+"/"+fileContents[i]).length>0){//如果大于0 则证明这是个文件夹 copyFolderToSD(fileContents[i],url); //当然,这里进入到子文件夹,那么,我们就需要检查这个子文件夹中是否有需要拷贝的文件,就需要调用当前的方法 //递归。。。 getAssetToSD(url+"/"+fileContents[i],assetsName+"/"+fileContents[i]); }else{ //如果不是文件夹 那么则进行拷贝工作,就是一些流文件的操作。。。 getFileCopy(mAm.open(assetsName+"/"+fileContents[i]),url+"/"+fileContents[i]); } } } catch (IOException e) { e.printStackTrace(); } } /** * 创建文件夹 */ private void copyFolderToSD(String folderFileName,String sdUrl){ File file = new File(sdUrl,folderFileName); if(!file.exists()){ file.mkdir(); } } /** * 复制文件 * @param is 文件流 * @param mUrl 需要拷贝到SD卡的路径... * @throws IOException */ private void getFileCopy(InputStream is,String mUrl) { File file = new File(mUrl); InputStreamReader isr = null; BufferedReader br = null; isr = new InputStreamReader(is); br = new BufferedReader(isr); FileOutputStream fos = null; OutputStreamWriter osw = null; BufferedWriter bw = null; try { if(!file.exists()){ file.createNewFile(); } fos = new FileOutputStream(file); osw = new OutputStreamWriter(fos); bw = new BufferedWriter(osw); String ss; String ioInfo = ""; while ((ss=br.readLine())!=null){ ioInfo+=ss; } bw.write(ioInfo); } catch (IOException e) { e.printStackTrace(); }finally { try { if(bw!=null){ bw.close(); } if(osw!=null){ osw.close(); } if(fos!=null){ fos.close(); } if(br!=null){ br.close(); } if(isr!=null){ isr.close(); } } catch (IOException e) { e.printStackTrace(); } } } /** * 删除工作 * @param url 需要删除内容的路径。。。 */ private void delFile(String url){ System.out.println("111"); File file = new File(url); if(!file.exists()){ return; } String[] delFileList = file.list(); for (int i = 0; i <delFileList.length ; i++) { String childFileUrl = url+"/"+delFileList[i]; File childFile = new File(childFileUrl); if(childFile.isFile()){//判断是否是文件 childFile.delete(); }else{ //不是文件 delFile(childFileUrl); } //删除当前子文件夹 childFile.delete(); } }}
附上源码。。。
1 0
- Android 递归实现assets拷贝到sd卡
- android中拷贝assets下的资源文件到SD卡中(可以超过1M)
- android中拷贝assets下的资源文件到SD卡中(可以超过1M)
- Android 将assets中的文件拷贝到本地SD卡使用
- Android 将assets中的单个文件拷贝到sd卡中
- android中拷贝assets下的资源文件到SD卡中(可以超过1M)
- assets目录下所有文件拷贝到sd卡
- 【Java】拷贝assets的文件到SD卡指定路径
- 复制android Assets到 sd卡
- android assets复制到sd卡
- Android递归拷贝assets资源到指定目录
- android从assets目录复制到sd卡
- android assets下rar文件解压到sd卡
- android:assets下的文件复制到SD卡
- android从assets目录复制文件到sd卡
- assets目录下的文件拷贝到sd卡目录下
- assets目录下的zip文件拷贝到sd卡下
- Android开发实践:拷贝assets到sdcard
- css居中方法详解
- iOS中QQ聊天界面发送消息及表情键盘的实现
- Handler消息机制(深入源码分析)
- 设计模式系列11---快速拷贝的原型模型
- zookeeper官档教程一(zookeeper数据模型)
- Android 递归实现assets拷贝到sd卡
- ios sqlite数据库的简单应用
- [leet code] Pow(x, n)
- C++ http请求
- svn的理解与应用
- 傅里叶:有关FFT,DFT与蝴蝶操作(转 重要!!!!重要!!!!真的很重要!!!!)
- HDU 2062 Subset sequence
- Ubuntu环境搭建之输入法的安装
- Android下u盘挂载相关文章