`
byandby
  • 浏览: 1696057 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android 数据存储之 Files

阅读更多
      Android中可以在设备本身的存储设备或者外接的存储设备中创建用于保存数据的文件。同样,在默认状态下,文件是不能在不同的程序之间共享的。用文件来存储数据可以通过 openFileOutput方法打开一个文件(如果这个文件不存在就自动创建这个文件),通过load方法来获取文件中的数据,通过deleteFile方法可以删除一个指定的文件。

      现在我们就用文件的方式实现我们的上一次写的保存音乐状态的例子。这个例子在这里,可以看一下--》http://byandby.iteye.com/blog/833292 我们这里就换一种实现方式,但是要达到的目的是一样的。首先,在退出应用程序之前,通过我们自己实现的一个save方法来保存这些数据(音效状态),然后,在应用程序启动时,通过一个load方法来读取这些数据。下边我们就来看看代码吧,图就不上了 大家去上一篇文章看吧。

  MIDIPlayer类主要用来开启和关闭音乐服务
package com.yarin.android.Examples_06_02;

import java.io.IOException;
import android.content.Context;
import android.media.MediaPlayer;

public class MIDIPlayer {
	public MediaPlayer playerMusic = null;
	private Context mContext = null;

	public MIDIPlayer(Context context) {
		mContext = context;
	}

	/* 播放音乐 */
	public void PlayMusic() {
		/* 装载资源中的音乐 */
		playerMusic = MediaPlayer.create(mContext, R.raw.start);

		/* 设置是否循环 */
		playerMusic.setLooping(true);
		try {
			playerMusic.prepare();
		} catch (IllegalStateException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		playerMusic.start();
	}

	/* 停止并释放音乐 */
	public void FreeMusic() {
		if (playerMusic != null) {
			playerMusic.stop();
			playerMusic.release();
		}
	}
}


Activity01 类
package com.yarin.android.Examples_06_02;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.TextView;

public class Activity01 extends Activity {

	private MIDIPlayer mMIDIPlayer = null;
	private boolean mbMusic = false;
	private TextView mTextView = null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		mTextView = (TextView) this.findViewById(R.id.TextView01);

		mMIDIPlayer = new MIDIPlayer(this);

		/* 读取文件数据 */
		load();

		if (mbMusic) {
			mTextView.setText("当前音乐状态:开");
			mbMusic = true;
			mMIDIPlayer.PlayMusic();
		} else {
			mTextView.setText("当前音乐状态:关");
		}

	}

	public boolean onKeyUp(int keyCode, KeyEvent event) {
		switch (keyCode) {
		case KeyEvent.KEYCODE_DPAD_UP:
			mTextView.setText("当前音乐状态:开");
			mbMusic = true;
			mMIDIPlayer.PlayMusic();
			break;
		case KeyEvent.KEYCODE_DPAD_DOWN:
			mTextView.setText("当前音乐状态:关");
			mbMusic = false;
			mMIDIPlayer.FreeMusic();
			break;
		}
		return true;
	}

	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			/* 退出应用程序时保存数据 */
			save();

			if (mbMusic) {
				mMIDIPlayer.FreeMusic();
			}
			this.finish();
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}

	/* 装载、读取数据 */
	void load() {
		/* 构建Properties对对象 */
		Properties properties = new Properties();
		try {
			/* 开发文件 */
			FileInputStream stream = this.openFileInput("music.cfg");
			/* 读取文件内容 */
			properties.load(stream);
		} catch (FileNotFoundException e) {
			return;
		} catch (IOException e) {
			return;
		}
		/* 取得数据 */
		mbMusic = Boolean.valueOf(properties.get("bmusic").toString());
	}

	/* 保存数据 */
	boolean save() {
		Properties properties = new Properties();

		/* 将数据打包成Properties */
		properties.put("bmusic", String.valueOf(mbMusic));
		try {
			FileOutputStream stream = this.openFileOutput("music.cfg",
					Context.MODE_WORLD_WRITEABLE);

			/* 将打包好的数据写入文件中 */
			properties.store(stream, "");
		} catch (FileNotFoundException e) {
			return false;
		} catch (IOException e) {
			return false;
		}

		return true;
	}
}


注意:如果使用绝对路径来存储文件,那么在其它应用程序中一样不能通过这个绝对路径来访问和操作该文件。

  同样,我们知道了通过Preferences 存储的数据保存在 shared_prefs文件夹下,那么如果我们没有指定路径的文件存储方式,数据又保存在什么地方呢?如果我们采用了文件存储数据的方式,系统就会在和 shared_prefs 相同的目录中产生一个名为 files 的文件夹,它下面的文件就是我们通过Files 存储数据的文件。
 


   如果在开发一个应用程序时,需要通过加载一个文件的内容来初始化程序,就可以在编译程序之前,在res/raw/tempFile中建立一个static 文件,这样在程序中通过Resources.openRawResources(R.raw.文件名) 方法同样返回一个InputStream 对象,直接读取文件内容。

   源码见附件
  • 大小: 45.1 KB
2
0
分享到:
评论

相关推荐

    Android学习之数据存储

    本资源“Android学习之数据存储”提供了一些关于Android数据存储的源码,这对于理解Android数据存储机制及其实践应用非常有帮助。 在Android中,有多种方式来实现数据存储,包括: 1. **SharedPreferences**:这是...

    Android数据存储之Sdcard

    在Android系统中,数据存储是应用开发的重要环节,它涉及到用户数据的持久化,以便在应用关闭或设备重启后还能保持信息。Sdcard(Secure Digital Card)是Android设备常用的外部存储器,用于存放大量的非敏感数据,...

    android之存储数据的四大方式

    在Android系统中,存储数据的方式主要有四种:内部存储、外部存储、SQLite数据库和SharedPreferences。这四种方式各有特点,适用于不同的应用场景。以下是对这四大存储方式的详细解释。 1. **内部存储** 内部存储...

    android五种数据存储方式

    在Android开发中,数据存储是不可或缺的一部分,它用于持久化应用程序的数据,以便在用户退出或设备重启后仍能保留这些信息。Android提供了五种主要的数据存储方式:共享首选项(SharedPreferences)、内部存储...

    Android不需要文件存储权限将文件保存至手机

    本文将深入探讨如何在Android中无需文件存储权限即可保存文件到手机,以及与之相关的权限管理、文件读写和清除缓存等知识点。 1. **运行时权限管理**:自Android 6.0开始,系统不再在安装时一次性授予所有权限,...

    安卓Android源码——学习之数据存储.zip

    在安卓(Android)开发中,数据存储是至关重要的一个环节,它涉及到应用程序如何持久化地保存用户数据、配置信息以及应用程序的...对于初学者来说,这是一个宝贵的资源,可以帮助他们掌握Android数据存储的核心概念。

    Android学习之数据存储.7z

    这个压缩包“Android学习之数据存储”可能包含了关于这些方法的实例代码,是学习和实践Android数据存储的好资源。通过深入学习和实践,你可以更好地掌握Android数据存储技术,提升应用的开发能力。

    android 的数据存储

    ### Android 数据存储详解 #### 第一章:数据存储方式概览 在开发Android应用时,开发者需要根据实际需求选择合适的数据存储方式。本章节将详细介绍Android应用中的几种常见数据存储方式及其应用场景。 - **...

    Android Files

    综上所述,`Android Files`压缩包中可能包含了一系列关于Android系统中文件管理、I/O操作、数据存储以及通信功能的示例代码和资源,对于开发者来说,这些都是深入了解Android平台和提升技能的重要参考资料。

    Android存储数据之一:文件保存与读取.pdf

    在Android开发中,文件的保存与读取是数据持久化的基础操作,涉及到的知识点主要包含以下几个方面: 1. Android文件系统结构:Android系统中,每个应用运行在独立的沙盒中,拥有自己私有的文件系统目录。应用的私有...

    Android 如何使用Files方式的 数据存储实例附源码.rar

    Android Files 数据存储方法演示附源码,Android 如何使用Files方式的 数据存储实例附源码,演示了模拟用户设置参数,查看 Files 产生的文件。  如果你需要用一个文件来加载初始化程序 ,可以事先在目录下res/raw/...

    第8章 移动信息仓库—Android的数据存储操作.pdf

    ### 第8章 移动信息仓库—Android的数据存储操作 #### 学习目标 - 掌握Android在存储方面的系统知识; - 学习各类存储方式的使用及具体步骤; - 了解SQLite数据库的存储实现; - 掌握Content Provider方式的存储...

    android数据存储之文件存储方法

    文件存储是 Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件当中的。 概述 文件存取的核心就是输入流和输出流。 Android文件的操作模式 文件的相关...

    Android应用源码之23.数据存储(2).zip

    数据存储(2).zip”提供了一些关于Android数据存储的实例代码,适用于开发者进行参考和学习。下面将详细介绍这个主题中的关键知识点。 一、Shared Preferences Shared Preferences是Android中最简单的数据存储方式,...

    Android_数据存储与访问

    在Android开发中,数据存储与访问是至关重要的环节,它涉及到如何持久化应用程序的数据以便后续使用或共享。Android提供了多种数据存储方式,包括文件、SharedPreferences、SQLite数据库、内容提供者和网络存储。...

    内部存储来存储数据

    总结起来,内部存储是Android应用存储数据的重要手段,提供了私有、安全的数据存储环境。通过合理利用内部存储,开发者可以实现应用的数据持久化,同时确保数据安全。在实际开发中,应根据需求选择合适的数据存储...

    Android应用源码之22.数据存储(1).zip

    数据存储(1)"提供了关于Android数据存储的源代码示例,帮助开发者深入理解这一主题。下面将详细介绍Android中的数据存储方式及其应用场景。 1. **SharedPreferences** SharedPreferences是Android中一种轻量级的...

Global site tag (gtag.js) - Google Analytics