`

复制Assets文件内容到指定文件夹

 
阅读更多
下面这段代码估计一般的人看了有点蒙,先简单的解释下,是用来复制Assets文件夹下的一个文件目录到指定的比如"SD"卡上一个指定文件目录下的操作:
package com.handler;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import android.content.res.AssetManager;

public class DuplicateHandler {


private static DuplicateHandler mDuplicateHandler;
private AssetManager mAssetManager = null;

public static DuplicateHandler getInstance(Client mClient) {
      if (mDuplicateHandler == null) {
          mDuplicateHandler = new DuplicateHandler(mClient);
      }
      return mDuplicateHandler;
}

	public DuplicateHandler(Client mClient) {
		this.mClient = mClient;
	}

	private String[] getImages(String mDirectory) {
		String[] tempImages = null;
		try {
			mAssetManager = mClient.getAssets();
			if (null != mAssetManager) {
				tempImages = mAssetManager.list(mDirectory);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return tempImages;
	}

	public void initPath(String mDirName) {
		try {
                           //初始化即将保存到的文件夹目录
			String mLastPath = Common.mCachePath + "/" + mDirName;
			File mLastFolder = new File(mLastPath);
			if (!mLastFolder.exists()) {
				mLastFolder.mkdirs();
			}
			mLastFolder = null;
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/** 复制Assets文件夹下的图片文件夹到指定目录. */
	public boolean duplicateImages(String mPath) {
		initPath(mPath);
		String[] mAllImages = getImages(mPath);
		InputStream mFileIn = null;
		FileOutputStream mFileOut;
		File mFile;
		for (int i = 0; i < mAllImages.length; i++) {
			if (!mAllImages[i].endsWith(".png")
					&& !mAllImages[i].endsWith(".jpg")
					&& !mAllImages[i].endsWith(".gif")
					&& !mAllImages[i].endsWith(".html")
					) {
				duplicateImages(mPath + "/" + mAllImages[i]);
			} else {
				try {
					mFile = new File(Common.mCachePath + "/" + mPath + "/"
							+ mAllImages[i]);
					if (!mFile.exists()) {
						mFile.createNewFile();
					}
					mFileIn = mAssetManager.open(mPath + "/" + mAllImages[i]);
					mFileOut = new FileOutputStream(mFile);
					int readedBytes;
					byte[] buf = new byte[128];
					while ((readedBytes = mFileIn.read(buf)) > 0) {
						mFileOut.write(buf, 0, readedBytes);
					}
					mFileOut.flush();
					mFileOut.close();
				} catch (IOException e) {
					e.printStackTrace();
					return false;
				}
			}
		}
		return true;

		// BitmapDrawable bitmapDrawable = (BitmapDrawable) image.getDrawable();
		// if (bitmapDrawable != null &&
		// !bitmapDrawable.getBitmap().isRecycled()) {
		// bitmapDrawable.getBitmap().recycle();
		// }
		// image.setImageBitmap(BitmapFactory.decodeStream(assetFile));
	}
}


分享到:
评论

相关推荐

    获取assets文件夹下资源

    // 进行读取操作,如复制文件内容到内存或写入其他文件 } catch (IOException e) { e.printStackTrace(); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { ...

    Android实现复制Assets文件到SD卡

    Android实现复制Assets文件到SD卡是Android开发中常见的需求,主要是将Assets文件夹中的文件复制到SD卡中,以便在应用程序中使用。下面将详细介绍Android实现复制Assets文件到SD卡的步骤和相关知识点。 一、Assets...

    Android代码-文件夹的创建将raw中文件放到SD卡中将assets中文件保存到SD卡中压缩包的解压文件的删除功能.rar

    这个压缩包文件"Android代码-文件夹的创建将raw中文件放到SD卡中将assets中文件保存到SD卡中压缩包的解压文件的删除功能.rar"包含了几个关键的Android文件操作知识点。下面我们将详细探讨这些内容。 首先,让我们从...

    从assets目录复制文件夹和文件,(不只是文件,附demo)

    通过这个`CopyAssetsFolderDemo`项目,开发者可以学习如何将assets目录下的文件和文件夹高效地复制到设备的指定位置。这个示例不仅适用于单一文件的复制,还支持整个文件夹的递归复制,这对于在应用运行时动态加载和...

    android的assets下的sql文件操作

    在AndroidManifest.xml文件中,确保添加了读写外部存储的权限,即使`assets`中的文件不直接涉及外部存储,但在复制数据库到应用私有目录时可能需要这一权限。 6. **异常处理** 在处理数据库操作时,需要对可能...

    android中复制资源文件中的数据库文件到sd卡或内存源码

    5. **调用复制方法**:在应用启动时调用上面定义的`copyFileFromAssetsToPath()`方法,将数据库文件从assets复制到目标路径。 ```java if (!copyFileFromAssetsToPath(context, "myDatabase.db", targetPath)) { /...

    DexClassLoader自定义加载Assets目录下的dex、jar文件

    值得注意的是,当从Assets加载.dex或.jar文件时,需要先将它们复制到应用的内部存储或外部存储,因为ClassLoader无法直接访问Assets目录。可以使用AssetManager来读取Assets目录的文件内容,然后写入到文件系统。 ...

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

    在Android应用开发中,有时我们需要将资源文件从项目的`Assets`目录复制到设备的外部存储(SD卡)上。这通常发生在应用启动时或者根据用户需求动态加载资源时。本篇将详细介绍如何实现这一功能,涉及到的主要知识点...

    rollup-plugin-copy:使用汇总复制文件和文件夹

    复制文件和文件夹,并具有glob支持。 安装 # yarn yarn add rollup-plugin-copy -D # npm npm install rollup-plugin-copy -D 用法 // rollup.config.js import copy from 'rollup-plugin-copy' export default { ...

    读写Android中assets目录下的文件的方法详解

    下面是一段示例代码,展示了如何在`B.apk`(一个拥有系统权限的服务或活动)中使用`AssetManager`从`A.apk`(只包含资源的apk)复制文件到特定目录: ```java public void onCreate(Bundle savedInstanceState) { ...

    assets-master.zip

    通常,Django项目的结构中有一个名为"static"的文件夹,我们可以在其中创建一个新的子文件夹,比如"static/pyecharts",然后将"assets-master"中的所有内容移动或复制到这个新创建的子文件夹中。 接下来,我们需要...

    yolov5的Arial.ttf 字体文件

    4. 将Arial.ttf复制并粘贴到项目根目录下。 5. 如果项目代码中需要引用此字体,可能需要修改相应的配置或代码段,指定Arial作为字体选项。 对于YOLOv5的自定义,可能还需要了解其他方面,如: - 数据集的准备:...

    Android读取assets目录下的所有图片并显示的方法

    在assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。 1. 先在Activity里面调用getAssets() 来获取AssetManager引用。 2. 再用AssetManager的open(String fileName, int ...

    assets读取db

    总结,"assets读取db"是指在Android应用中,通过AssetManager读取`assets`目录下的数据库文件,并将其复制到Android的数据库路径,然后通过SQLiteOpenHelper进行数据库的操作。这个过程适用于初始化应用时需要预加载...

    Android获取assets文件夹中的数据并写入SD卡示例

    在Android应用开发中,有时我们需要从应用的assets文件夹中读取数据,如文本文件、数据库文件等,并将这些数据保存到外部存储(通常是SD卡)以便后续使用。本示例将详细讲解如何实现这个功能。 首先,assets文件夹...

    TFC材料库(可复制试用)

    通过复制这个材料库到TFC模组的指定文件夹,玩家可以直接在游戏中使用这些预设的材料和物品,无需手动创建或编辑。 2. **文件MATERIAL的解读** "MATERIAL"可能是材料库的主文件或者一个分类文件,里面包含了TFC...

    android-sdk-samples:适用于Android的Affdex SDK的示例应用

    获取Affectiva Android SDK将SDK的资产文件夹的内容复制到该项目的资产文件夹中将SDK的libs文件夹的内容复制到该项目的libs文件夹中将armeabi-v7a文件夹(在SDK libs文件夹中找到)复制到该项目的jniLibs文件夹中将...

    UniVRPNity:将 VRPN 与 Unity 免费版一起使用

    将 UniVRPNityCommon.dll 和 UniVRPNityClient.dll 复制粘贴到您的 Assets 文件夹中将 UniVRPNity Assets 文件夹与您的 Assets 文件夹合并如何使用自己的设备? 创建远程设备(模拟、按钮、跟踪器) 指定设备的名称...

    unity读取excel文件的库文件

    1. **导入库**:将"ExcelResolutionForUnity"中的所有必需文件复制到Unity项目的"Assets/Plugins"目录下。 2. **编写C#脚本**:创建一个新的C#脚本或者在现有脚本中引入库的命名空间,以便访问其提供的功能。 3. *...

Global site tag (gtag.js) - Google Analytics