資料存放區與訪問 很多時候我們開發的軟體需要對處理後的資料進行儲存,以供再次訪問,Android為資料存放區提供了如下幾種方式: ·檔案·SharedPreferences(參數)·SQLite資料庫·內容提供者(Content provider)·網路 下面示範檔案的儲存與讀取: activity_main.xml[html] <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/text1" /> <EditText android:id="@+id/filename" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="abc.txt" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="檔案內容" /> <EditText android:id="@+id/filecontent" android:layout_width="fill_parent" android:layout_height="wrap_content" android:minLines="3" /> <Button android:id="@+id/myButtonSave" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="儲存" /> <Button android:id="@+id/myButtonRead" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="讀取" /> </LinearLayout> FileServise.java [java] package com.example.service; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import android.content.Context; public class FileServise { /** * 儲存檔案 * * @param filename * 檔案名稱 * @param filecontent * 檔案內容 * @return */ private Context context; public FileServise(Context context) { super(); this.context = context; } public void savefile(String filename, String filecontent) throws IOException { /* * IO 技術 看過我的JAVASE IO流的 寫起來很輕鬆,不過這裡使用安卓的Context 對象可以快速得到輸出資料流 第二個參數是 * 私人操作模式,建立出來的檔案只能被本應用訪問。 同時,採用私人模式建立的檔案, 會覆蓋源檔案的內容。 */ FileOutputStream fos = context.openFileOutput(filename, Context.MODE_PRIVATE); fos.write(filecontent.getBytes()); fos.close(); } /** * 檔案讀取 * * @param filename * @return * @throws IOException */ public String readfile(String filename) throws IOException { FileInputStream fis = context.openFileInput(filename); // 寫入記憶體中的方法 ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = fis.read(buffer)) != -1) { baos.write(buffer, 0, len); } // 擷取 byte[] data = baos.toByteArray(); return new String(data); } }