Activity提供了openFileOutput()方法可以用于把数据输出到文件中,同时提供了openFileInput()方法读取数据,具体实现看代码:
首先是一个自定义的MediaPlayer类:
import java.io.IOException;
import android.content.Context;
import android.media.MediaPlayer;
public class MyPlayer {
private Context mContext;
private MediaPlayer mPlayer;
public MyPlayer(Context context) {
mContext = context;
}
public void playMusic(){
mPlayer = MediaPlayer.create(mContext, R.raw.start);
mPlayer.setLooping(false);
try {
mPlayer.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mPlayer.start();
}
public void freeMusic(){
if (mPlayer != null) {
mPlayer.stop();
mPlayer.release();
}
}
}
实现file存储代码:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.view.KeyEvent;
import android.widget.TextView;
@SuppressLint("WorldWriteableFiles")
public class MainActivity extends Activity {
private MyPlayer myPlayer;
private boolean mbMusic;
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.text_view_01);
myPlayer = new MyPlayer(this);
loader();
if (mbMusic) {
myPlayer.playMusic();
mTextView.setText("当前音乐状态:开");
} else {
mTextView.setText("当前音乐状态:关");
}
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
switch (keyCode)
{
case KeyEvent.KEYCODE_DPAD_UP:
mTextView.setText("当前音乐状态:开");
mbMusic = true;
myPlayer.playMusic();
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
mTextView.setText("当前音乐状态:关");
mbMusic = false;
myPlayer.freeMusic();
break;
}
return true;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK)
{
save();
if ( mbMusic )
{
myPlayer.freeMusic();
}
this.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
private boolean save() {
// TODO Auto-generated method stub
Properties properties = new Properties();
properties.put("mbMusic", String.valueOf(mbMusic));
try {
@SuppressWarnings("deprecation")
FileOutputStream foStream = openFileOutput("music.cfg", Context.MODE_WORLD_WRITEABLE);
properties.store(foStream, null);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
private void loader() {
// TODO Auto-generated method stub
Properties pro = new Properties();
try {
FileInputStream fiStream = openFileInput("music.cfg");
pro.load(fiStream);
mbMusic = Boolean.valueOf(pro.getProperty("mbMusic"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
介绍一下Android提供的读写模式: