下面这段代码估计一般的人看了有点蒙,先简单的解释下,是用来复制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));
}
}
分享到:
相关推荐
// 进行读取操作,如复制文件内容到内存或写入其他文件 } catch (IOException e) { e.printStackTrace(); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { ...
Android实现复制Assets文件到SD卡是Android开发中常见的需求,主要是将Assets文件夹中的文件复制到SD卡中,以便在应用程序中使用。下面将详细介绍Android实现复制Assets文件到SD卡的步骤和相关知识点。 一、Assets...
这个压缩包文件"Android代码-文件夹的创建将raw中文件放到SD卡中将assets中文件保存到SD卡中压缩包的解压文件的删除功能.rar"包含了几个关键的Android文件操作知识点。下面我们将详细探讨这些内容。 首先,让我们从...
通过这个`CopyAssetsFolderDemo`项目,开发者可以学习如何将assets目录下的文件和文件夹高效地复制到设备的指定位置。这个示例不仅适用于单一文件的复制,还支持整个文件夹的递归复制,这对于在应用运行时动态加载和...
在AndroidManifest.xml文件中,确保添加了读写外部存储的权限,即使`assets`中的文件不直接涉及外部存储,但在复制数据库到应用私有目录时可能需要这一权限。 6. **异常处理** 在处理数据库操作时,需要对可能...
5. **调用复制方法**:在应用启动时调用上面定义的`copyFileFromAssetsToPath()`方法,将数据库文件从assets复制到目标路径。 ```java if (!copyFileFromAssetsToPath(context, "myDatabase.db", targetPath)) { /...
值得注意的是,当从Assets加载.dex或.jar文件时,需要先将它们复制到应用的内部存储或外部存储,因为ClassLoader无法直接访问Assets目录。可以使用AssetManager来读取Assets目录的文件内容,然后写入到文件系统。 ...
在Android应用开发中,有时我们需要将资源文件从项目的`Assets`目录复制到设备的外部存储(SD卡)上。这通常发生在应用启动时或者根据用户需求动态加载资源时。本篇将详细介绍如何实现这一功能,涉及到的主要知识点...
复制文件和文件夹,并具有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 { ...
下面是一段示例代码,展示了如何在`B.apk`(一个拥有系统权限的服务或活动)中使用`AssetManager`从`A.apk`(只包含资源的apk)复制文件到特定目录: ```java public void onCreate(Bundle savedInstanceState) { ...
通常,Django项目的结构中有一个名为"static"的文件夹,我们可以在其中创建一个新的子文件夹,比如"static/pyecharts",然后将"assets-master"中的所有内容移动或复制到这个新创建的子文件夹中。 接下来,我们需要...
4. 将Arial.ttf复制并粘贴到项目根目录下。 5. 如果项目代码中需要引用此字体,可能需要修改相应的配置或代码段,指定Arial作为字体选项。 对于YOLOv5的自定义,可能还需要了解其他方面,如: - 数据集的准备:...
在assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。 1. 先在Activity里面调用getAssets() 来获取AssetManager引用。 2. 再用AssetManager的open(String fileName, int ...
总结,"assets读取db"是指在Android应用中,通过AssetManager读取`assets`目录下的数据库文件,并将其复制到Android的数据库路径,然后通过SQLiteOpenHelper进行数据库的操作。这个过程适用于初始化应用时需要预加载...
在Android应用开发中,有时我们需要从应用的assets文件夹中读取数据,如文本文件、数据库文件等,并将这些数据保存到外部存储(通常是SD卡)以便后续使用。本示例将详细讲解如何实现这个功能。 首先,assets文件夹...
通过复制这个材料库到TFC模组的指定文件夹,玩家可以直接在游戏中使用这些预设的材料和物品,无需手动创建或编辑。 2. **文件MATERIAL的解读** "MATERIAL"可能是材料库的主文件或者一个分类文件,里面包含了TFC...
获取Affectiva Android SDK将SDK的资产文件夹的内容复制到该项目的资产文件夹中将SDK的libs文件夹的内容复制到该项目的libs文件夹中将armeabi-v7a文件夹(在SDK libs文件夹中找到)复制到该项目的jniLibs文件夹中将...
将 UniVRPNityCommon.dll 和 UniVRPNityClient.dll 复制粘贴到您的 Assets 文件夹中将 UniVRPNity Assets 文件夹与您的 Assets 文件夹合并如何使用自己的设备? 创建远程设备(模拟、按钮、跟踪器) 指定设备的名称...
1. **导入库**:将"ExcelResolutionForUnity"中的所有必需文件复制到Unity项目的"Assets/Plugins"目录下。 2. **编写C#脚本**:创建一个新的C#脚本或者在现有脚本中引入库的命名空间,以便访问其提供的功能。 3. *...