Android读取assets目录下文件数据内容

简介: Android读取assets目录下文件数据内容Android的体系架构设计中,assets目录下的数据内容(图片、文件等等)将不会被Android系统压缩、二次处理等,assets目录下的文件将保持原汁原味打包进Android的apk文件中,因此,利用Android assets这一点特性,根据项目开发的需要,在某种情况下,可以在assets目录下存放一些不希望被Android系统二次处理的原始文件,就像在PC开发时候直接针对硬盘上存放的文件内容进行读写一样读出原始数据。
Android读取assets目录下文件数据内容


Android的体系架构设计中,assets目录下的数据内容(图片、文件等等)将不会被Android系统压缩、二次处理等,assets目录下的文件将保持原汁原味打包进Android的apk文件中,因此,利用Android assets这一点特性,根据项目开发的需要,在某种情况下,可以在assets目录下存放一些不希望被Android系统二次处理的原始文件,就像在PC开发时候直接针对硬盘上存放的文件内容进行读写一样读出原始数据。比如Android项目中有以下assets文件目录结构,如图:



现给出代码实例:

public String readAsset() {
		AssetManager am = this.getAssets();
		String[] path = null;
		try {
			// 列出files目录下的文件
			path = am.list("files");
		} catch (IOException e) {
			e.printStackTrace();
		}

		String data = "";

		// 遍历assets目录下,files文件夹下的所有文件,读取这些文件的数据并输出。
		for (int i = 0; i < path.length; i++) {
			InputStream is = null;
			try {
				// 根据上文的 ‘files’+文件名,拼成一个路径,用AssetManager打开一个输入流,读写数据。
				is = am.open("files/" + path[i]);
			} catch (IOException e) {
				e.printStackTrace();
			}

			// 读取一个文件完成,加上换行符(主要是为了观察输出结果,无他)。
			data = data + readDataFromInputStream(is) + "\n";

			try {
				is.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		return data;
	}

	public String readDataFromInputStream(InputStream is) {
		BufferedInputStream bis = new BufferedInputStream(is);

		String str = "", s = "";

		int c = 0;
		byte[] buf = new byte[64];
		while (true) {
			try {
				c = bis.read(buf);
			} catch (IOException e) {
				e.printStackTrace();
			}

			if (c == -1)
				break;
			else {
				try {
					s = new String(buf, 0, c, "UTF-8");
				} catch (UnsupportedEncodingException e) {
					e.printStackTrace();
				}
				str += s;
			}
		}

		try {
			bis.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return str;
	}

其中,this指针为当前的Context或者Activity。

相关文章
|
2月前
|
Android开发
安卓SO层开发 -- 编译指定平台的SO文件
安卓SO层开发 -- 编译指定平台的SO文件
30 0
|
4天前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android&#39;s AsyncTask simplifies asynchronous tasks for brief background work, bridging UI and worker threads. It involves execute() for starting tasks, doInBackground() for background execution, publishProgress() for progress updates, and onPostExecute() for returning results to the main thread.
5 0
|
4天前
|
网络协议 安全 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
HTTP和HTTPS是网络数据传输协议,HTTP基于TCP/IP,简单快速,HTTPS则是加密的HTTP,确保数据安全。在Android中,过去常用HttpURLConnection和HttpClient,但HttpClient自Android 6.0起被移除。现在推荐使用支持TLS、流式上传下载、超时配置等特性的HttpsURLConnection进行网络请求。
5 0
|
18天前
|
XML Java Android开发
Android每点击一次按钮就添加一条数据
Android每点击一次按钮就添加一条数据
21 1
|
1月前
|
存储 Android开发 C++
【Android 从入门到出门】第五章:使用DataStore存储数据和测试
【Android 从入门到出门】第五章:使用DataStore存储数据和测试
30 3
|
2月前
|
JSON Java Go
|
2月前
|
算法 Java Android开发
安卓逆向 -- 调用其他APK的SO文件
安卓逆向 -- 调用其他APK的SO文件
17 0
|
2月前
|
Android开发
安卓逆向 -- Hook多个dex文件
安卓逆向 -- Hook多个dex文件
18 1
|
2月前
|
JavaScript Java 数据安全/隐私保护
安卓逆向 -- POST数据解密
安卓逆向 -- POST数据解密
25 2
|
3月前
|
IDE 开发工具 Android开发
Android Studio 下发布项目成APK文件
Android Studio 下发布项目成APK文件
117 1