程式執行當中常常需要記錄各種資訊,如果需要處理的資訊較為單純,可以直接使用文字檔來紀錄,假若資料較繁雜就需要用SQLite,在此先以簡單文字檔做切入,先以Java I/O介紹寫檔、讀檔常用的方法及常用的Method

寫入文字檔部分

須使用java當中的FileWriter,寫入單位為char,產生物件方式為

FileWrite FWriter = new FileWriter(“/sdcard/output.txt”, false)

第一個參數為檔案名稱及路徑,第二個參數為寫入模式是否為append(附加方式寫檔)( False 表示寫入的資料會覆蓋掉檔案原有的內容;若設為 True則表示用附加的方式寫到檔案原有內容之後),除了使用FileWriter外,常會搭配使用BufferedWriter,FileWriter不同之處在於Buffer機制,當只用FileWriter寫檔時,每次呼叫write()當會動用到I/O,假若使用Buffer機制來做write(),會先將要寫入的檔案暫時暫存起來,等到一定資料量之後在寫入磁碟,因此可以省下不少I/O的負擔。

小試身手小範例

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
public class example0802 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView( R.layout.main );
    try{
        FileWriter fw = new FileWriter("/sdcard/output.txt", false);
        BufferedWriter bw = new BufferedWriter(fw); //將BufferedWeiter與FileWrite物件做連結
        bw.write("Hello, Sih! Hello, Android!");
        bw.newLine();
        bw.close();
    }catch(IOException e){
       e.printStackTrace();
    }
  }
}

AndroidManifest.xml要記得增加這行唷!

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

接著就可以進入CMD內adb shell查看所建立的output.txt是否成功,關於使用adb shell部分請查看另一篇文章 [Android] 使用adb指令

輸入ls可以看到手機內目前所有資料夾,在主程式內設定了文字檔存放的位置"/sdcard/output.txt"所以在此會先看到sdcard資料夾

cmd005  

cd指令進入sdcard資料夾,ls指令列出資料夾內所有檔案,找到了剛剛建立的output.txt (建立成功了!)

cmd007  

cat指令輸出output.txt內資料,可千萬要記得打附檔名,不然就會像我第一次那樣失敗(No such file or directory),附上失敗圖><"

cmd008  

 


arrow
arrow

    S 發表在 痞客邦 留言(4) 人氣()