今天我們看一下Android的另一個資料存儲方式Files;它可以在本身的存放裝置或者外接存放裝置中創建用於保存資料的檔。它主要是通過FileInputStream,FileOutputStream來運算元和管理據檔,通過load()來獲取檔中的資料,通過store()來保存資料,也可以通過deleteFile()來刪除一個指定的檔。

 

好了,現在我們寫一個小程式來看一下具體的實現細節:

 

package com.File;

 

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 boolean mbMusic = false;
private TextView mTextView = null;
private TextView mTextView1 = null;
String text = "你爸是李剛?";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

 

//產生實體組建
mTextView = (TextView) this.findViewById(R.id.textView1);
mTextView1 = (TextView) this.findViewById(R.id.textView2);

 

//讀取資料
load();
if(mbMusic){
mTextView.setText("當前音樂狀態:開");
mTextView1.setText(text);
}else{
mTextView.setText("當前音樂狀態:關");
mTextView1.setText(text);
}

 

}


 

public boolean onKeyUp(int keyCode,KeyEvent event)
{
switch(keyCode)
{
case KeyEvent.KEYCODE_DPAD_UP:
mbMusic = true;
mTextView.setText("當前的音樂狀態:開");
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
mbMusic = false;
mTextView.setText("當前的音樂狀態:關");
break;
case KeyEvent.KEYCODE_BACK :

 

// 用來存儲資料
save();

 

// 結束程式
this.finish();
break;
}
return true;
}

 

//讀取資料的方法
void load(){

 

//構建properties物件
Properties properties = new Properties();
try{

 

//創建兩個檔
FileInputStream stream = this.openFileInput("music.cfg");
FileInputStream stream1 = this.openFileInput("TEXT.cfg");

 

//讀取兩個檔的內容
properties.load(stream);
properties.load(stream1);

 

}catch(FileNotFoundException e)
{
return;
}catch(IOException e){
return;
}

 

// 獲得資料
mbMusic = Boolean.valueOf(properties.get("bmusic").toString());
text = String.valueOf(properties.get("String"));
}
boolean save()
{

 

//同樣來構建Propreties 物件
Properties properties = new Properties();

 

// 將要寫入的資料打成兩個包
properties.put("bmusic",String.valueOf(mbMusic));
properties.put("String","你爸不是李剛");
try{

 

//設置兩個檔的類型都是可寫入的
FileOutputStream stream = this.openFileOutput("music.cfg",
Context.MODE_WORLD_WRITEABLE);
FileOutputStream stream1 = this.openFileOutput("TEXT.cfg", Context.MODE_WORLD_WRITEABLE);

 

//將大包好的資料寫入檔中
properties.store(stream, "");
properties.store(stream1,"");
}catch(FileNotFoundException e)
{
return false;
}catch(IOException e)
{
return false;
}

 

return true;
}
}

 

好了,當我們退出程式是會把資料保存到檔中,再打開就會獲得我們原來設定的資料。

 

arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()