`
dinosaurcxy
  • 浏览: 14136 次
  • 性别: Icon_minigender_2
  • 来自: 哈尔滨
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Android程序函数 将assets文件夹下的文件复制到手机的sd

 
阅读更多
最近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 下的文件复制到手机内存中

    总之,将Android assets目录下的文件复制到手机内存或SD卡,需要对Android的文件系统和权限管理有深入理解。在实际开发中,这个操作通常在应用启动时或需要时执行,以确保文件的可用性。正确处理异常和权限问题,...

    android:assets下的文件复制到SD卡

    在Android开发中,有时我们需要将应用内部的资源文件,如图片、文本或配置文件等,复制到外部存储(如SD卡)以便于后续的操作,比如读取大文件以减轻内存负担,或者创建用户可访问的数据目录。`android:assets`是...

    android 读取 assets 文件夹下的音频

    要读取`assets`文件夹下的音频文件,首先需要创建一个`AssetManager`对象,它是Android系统提供的一种接口,用于访问应用程序的资产。以下是如何获取`AssetManager`的代码: ```java AssetManager assetManager = ...

    获取assets文件夹下资源

    - 在Android 10及以上版本,如果应用具有`READ_EXTERNAL_STORAGE`权限,也可以将`assets`中的文件复制到外部存储,以便用户访问。 综上所述,`assets`文件夹是Android开发中存储非结构化数据的重要工具,通过`...

    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文件操作知识点。下面我们将详细探讨这些内容。 首先,让我们从...

    Android访问assets本地json文件的方法

    在main文件夹下新建assets文件,然后再assets文件中新建namelist.json文件夹,将json数据复制到test.json文件中。 2、访问json文件 try { AssetManager assetManager = getAssets(); // 获得assets资源管理器...

    【android开发】解析assets文件夹下XML资源文件

    assets文件夹是Android项目中的一个特殊目录,用于存储应用程序运行时需要的任意文件,如数据文件、配置文件或者非标准格式的资源。 首先,让我们了解一下assets文件夹。它与res目录不同,res目录中的文件会被编译...

    Unity打包发布后正确读取StreamingAssets文件夹下的Html文件DEMO

    在Android上,Unity会将StreamingAssets文件夹的内容复制到APK的assets目录下,而在iOS上则会被包含在.app包内。因此,在打包后,我们需要根据目标平台来调整读取文件的策略。 为了在Unity中正确读取Streaming...

    Android 加载assets文件夹的文本文件 图片

    本篇文章将详细探讨如何在Android应用中加载`assets`文件夹内的文本文件和图片。 1. **加载assets中的文本文件** - **创建assets文件夹**:首先,在项目的`src/main`目录下创建一个名为`assets`的文件夹(如果不...

    Android复制assets文件到SD卡

    Android复制assets文件到SD卡是一种常见的文件操作,目的是将应用程序的assets文件夹中的文件复制到SD卡上,以便于应用程序的数据存储和读取。本文将详细介绍Android复制assets文件到SD卡的方法,包括使用线程池和...

    Android 复制拷贝 Assets 下的文件夹或文件到 SD 卡(copy directory from assets to sdcard android)

    支持 Assets 下的文件或者文件夹拷贝到手机存储 public static void copyAssetsDirToSDCard(Context context, String assetsDirName, String sdCardPath) { Log.d(TAG, copyAssetsDirToSDCard() called with: ...

    android的assets下的文件保存到sd卡

    标题"android的assets下的文件保存到sd卡"涉及到的就是这样一个场景,即如何将Android应用中`assets`目录下的文件保存到SD卡上。`assets`目录是Android项目中用于存放非编译型资源的一个特殊位置,它可以包含任意...

    Java和JNI读取android apk里assets文件夹示例demo

    Java和JNI读取android apk里assets文件夹示例demo,参见博客详解: http://blog.csdn.net/yanzi1225627/article/details/20577059

    android的assets下的sql文件操作

    在`assets`目录下放置SQLite数据库文件(例如`PhoneBooks1.db`),需要在应用运行时将其复制到Android的特定数据存储区域,通常是`data/data/your_package_name/databases`目录。这可以通过`SQLiteOpenHelper`的...

    Android将assets中的zip压缩文件解压到SD卡

    在Android开发中,有时我们需要将应用内部的资源文件,如ZIP压缩文件,解压到外部存储(即SD卡)上,以便用户可以访问或使用这些数据。本文将详细讲解如何实现这一功能,主要涉及Android权限管理、文件操作以及ZIP...

    Android Assets文件和Raw文件读取

    在Android应用开发中,Assets和Raw文件夹是两个重要的资源存储区域,用于存放非编译的、原始的数据文件。这两个目录都有各自的用途和特点,开发者可以根据需求选择合适的存储位置。 **Android Assets文件** Assets...

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

    本文示例主要实现了Android获取assets文件夹中的数据并将其写入到SD卡中,该程序实现的步骤主要为:首先读取assets文件夹中的数据库,再将其写入到SD存储卡中。 完整示例代码如下: import java.io.File; import ...

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

    在Android开发中,有时我们需要将预置的数据库文件与应用一起发布,并在应用程序首次启动时将其复制到外部存储(如SD卡)或内部存储(内存)中,以便于后续的操作和使用。这样的需求通常出现在那些需要提供初始数据...

Global site tag (gtag.js) - Google Analytics