最近Android吧在做个功能是将asset文件夹下的所有文件(包括子文件)全部拷贝出来到指定目录下。所用的方法无非是用AssetManager。但是这里有个问题是也要讲子文件夹和子文件都要拷贝出来。到网上Google了下,也到baidu搜索了下,发现了很多类似问题。但好像都有问题。有些显然只能做到将asset直接目录下的文件拷贝出来,但子文件夹拷贝不出来,而且,碰到文件夹,会抛异常。无奈自己只好动手写了个。如下:
private void CopyAssets(String assetDir, String dir) {
String[] files;
try {
files = this.getResources().getAssets().list(assetDir);
} catch (IOException e1) {
return;
}
File mWorkingPath = new File(dir);
// if this directory does not exists, make one.
if (!mWorkingPath.exists()) {
if (!mWorkingPath.mkdirs()) {
}
}
for (int i = 0; i < files.length; i++) {
try {
String fileName = files[i];
// we make sure file name not contains '.' to be a folder.
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);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
非原创,原文出处: http://tieba.baidu.com/f?kz=1096393066
分享到:
相关推荐
总之,将Android assets目录下的文件复制到手机内存或SD卡,需要对Android的文件系统和权限管理有深入理解。在实际开发中,这个操作通常在应用启动时或需要时执行,以确保文件的可用性。正确处理异常和权限问题,...
在Android开发中,有时我们需要将应用内部的资源文件,如图片、文本或配置文件等,复制到外部存储(如SD卡)以便于后续的操作,比如读取大文件以减轻内存负担,或者创建用户可访问的数据目录。`android:assets`是...
要读取`assets`文件夹下的音频文件,首先需要创建一个`AssetManager`对象,它是Android系统提供的一种接口,用于访问应用程序的资产。以下是如何获取`AssetManager`的代码: ```java AssetManager assetManager = ...
- 在Android 10及以上版本,如果应用具有`READ_EXTERNAL_STORAGE`权限,也可以将`assets`中的文件复制到外部存储,以便用户访问。 综上所述,`assets`文件夹是Android开发中存储非结构化数据的重要工具,通过`...
Android实现复制Assets文件到SD卡是Android开发中常见的需求,主要是将Assets文件夹中的文件复制到SD卡中,以便在应用程序中使用。下面将详细介绍Android实现复制Assets文件到SD卡的步骤和相关知识点。 一、Assets...
这个压缩包文件"Android代码-文件夹的创建将raw中文件放到SD卡中将assets中文件保存到SD卡中压缩包的解压文件的删除功能.rar"包含了几个关键的Android文件操作知识点。下面我们将详细探讨这些内容。 首先,让我们从...
在main文件夹下新建assets文件,然后再assets文件中新建namelist.json文件夹,将json数据复制到test.json文件中。 2、访问json文件 try { AssetManager assetManager = getAssets(); // 获得assets资源管理器...
assets文件夹是Android项目中的一个特殊目录,用于存储应用程序运行时需要的任意文件,如数据文件、配置文件或者非标准格式的资源。 首先,让我们了解一下assets文件夹。它与res目录不同,res目录中的文件会被编译...
在Android上,Unity会将StreamingAssets文件夹的内容复制到APK的assets目录下,而在iOS上则会被包含在.app包内。因此,在打包后,我们需要根据目标平台来调整读取文件的策略。 为了在Unity中正确读取Streaming...
本篇文章将详细探讨如何在Android应用中加载`assets`文件夹内的文本文件和图片。 1. **加载assets中的文本文件** - **创建assets文件夹**:首先,在项目的`src/main`目录下创建一个名为`assets`的文件夹(如果不...
Android复制assets文件到SD卡是一种常见的文件操作,目的是将应用程序的assets文件夹中的文件复制到SD卡上,以便于应用程序的数据存储和读取。本文将详细介绍Android复制assets文件到SD卡的方法,包括使用线程池和...
支持 Assets 下的文件或者文件夹拷贝到手机存储 public static void copyAssetsDirToSDCard(Context context, String assetsDirName, String sdCardPath) { Log.d(TAG, copyAssetsDirToSDCard() called with: ...
标题"android的assets下的文件保存到sd卡"涉及到的就是这样一个场景,即如何将Android应用中`assets`目录下的文件保存到SD卡上。`assets`目录是Android项目中用于存放非编译型资源的一个特殊位置,它可以包含任意...
Java和JNI读取android apk里assets文件夹示例demo,参见博客详解: http://blog.csdn.net/yanzi1225627/article/details/20577059
在`assets`目录下放置SQLite数据库文件(例如`PhoneBooks1.db`),需要在应用运行时将其复制到Android的特定数据存储区域,通常是`data/data/your_package_name/databases`目录。这可以通过`SQLiteOpenHelper`的...
在Android开发中,有时我们需要将应用内部的资源文件,如ZIP压缩文件,解压到外部存储(即SD卡)上,以便用户可以访问或使用这些数据。本文将详细讲解如何实现这一功能,主要涉及Android权限管理、文件操作以及ZIP...
在Android应用开发中,Assets和Raw文件夹是两个重要的资源存储区域,用于存放非编译的、原始的数据文件。这两个目录都有各自的用途和特点,开发者可以根据需求选择合适的存储位置。 **Android Assets文件** Assets...
本文示例主要实现了Android获取assets文件夹中的数据并将其写入到SD卡中,该程序实现的步骤主要为:首先读取assets文件夹中的数据库,再将其写入到SD存储卡中。 完整示例代码如下: import java.io.File; import ...
在Android开发中,有时我们需要将预置的数据库文件与应用一起发布,并在应用程序首次启动时将其复制到外部存储(如SD卡)或内部存储(内存)中,以便于后续的操作和使用。这样的需求通常出现在那些需要提供初始数据...