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;@Overridepublic 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 对象,直接读取文件内容。

源码见附件

更多相关文章

  1. USB Camera在android车机上应用前景及初试小结
  2. dom读取xml文档---android
  3. Android(安卓)windows系统上安装与使用NDK
  4. android数据存储与访问之使用pull解析器
  5. Java利用TCP协议发送文件(三)--客户端设计
  6. System.Lazy延迟加载 在很多情况下,有些对象需要在使用时加载或根
  7. Android(安卓)Studio 使用Gradle引入第三方库文件的总结(Jar文件
  8. android中app的优化流程
  9. 关于Android(安卓)如何实现mobile data on/off功能

随机推荐

  1. Android(安卓)SugarORM(1)
  2. EditText的两个高冷用法
  3. Android(安卓)出现的警告(Service Intent
  4. Android(安卓)studio 使用ndk开发JNI
  5. 安卓开发 Toasty的使用
  6. 第二次WIN7下配置Android模拟器环境手记
  7. 数据类型转换的一般操作与检测正确性,变量
  8. 精通android之Broadcast Receiver
  9. Android(安卓)代码中设置EditText只输入
  10. 1.1 如何配置Android的开发环境步骤