隨筆 - 117  文章 - 72  trackbacks - 0

          聲明:原創作品(標有[原]字樣)轉載時請注明出處,謝謝。

          常用鏈接

          常用設置
          常用軟件
          常用命令
           

          訂閱

          訂閱

          留言簿(7)

          隨筆分類(130)

          隨筆檔案(123)

          搜索

          •  

          積分與排名

          • 積分 - 155532
          • 排名 - 390

          最新評論

          說數據持久化,初學者可能還不太懂;但要說把數據保存到文件,這誰都懂了。為什么說持久化就是把數據保存到文件?持久化指的就是當程序退出后,其中的數據能夠保留下來,供程序再次運行的時候使用。這些數據保留在什么地方最好呢?當然是文件里。

          保存到文件是數據持久化最常用的方式,除此之外,還可以把數據保存到數據庫,或者發送到其它機器,這都是持久化。不過保存在文件是最簡單的方式。具體來說就是:選取需要保存的數據,按照一定的格式組織起來,然后寫入文件。下面是一個簡單的例子:


          import java.io.*;
          import java.util.ArrayList;
          import java.util.Date;
          import java.util.List;
          import java.text.DateFormat;
           
          /**2009-3-15
           * 持久化示例。如何將內存中的數據保存起來,并沒有一定的格式,任何人
           * 都可以根據自己的喜好來制定。持久化需要文件操作,所以請務必先弄懂
           * 如何讀寫文件。
           */
          public class Persistant {
           
              //文件名可隨意指定,你可以用文本編輯器打開這個文件(注意,記事本無法處理換行)
              static String filename = "persons.data";
           
              public static void main(String[] args) throws Exception {
                  // 將這個程序運行兩遍。
                  // 第一遍它會創建一些 Person 對象并保存到文件;
                  // 第二遍它會從文件中讀取對象數據并顯示出來。
                  if (!new File(filename).exists()) {
                      createAndSave();
                  } else {
                      readAndShow();
                  }
              }
           
              // 生成并保存 Person 對象
              private static void createAndSave() throws IOException {
                  List<Person> persons = createPersons();
                  savePersons(persons);
              }
           
              // 讀取并顯示 Person 對象
              private static void readAndShow() throws IOException {
                  List<Person> persons = readPersons();
                  showPersons(persons);
              }
           
              // 創建要保存的 Person 對象
              private static List<Person> createPersons() {
                  List<Person> result = new ArrayList<Person>();
                  result.add(new Person("張三", new Date(), true));
                  result.add(new Person("李四", new Date(), false));
                  result.add(new Person("王五", new Date(), true));
                  return result;
              }
           
              // 保存 Person 對象到文件。保存格式為:
              // 1、每個 Person 一行
              // 2、每行依次存放 name、birthday、male 三個屬性值,用 tab 隔開
              // 3、birthday 屬性保存的是毫秒數,male 屬性保存的是字符串
              private static void savePersons(List<Person> persons) throws IOException {
           
                  // 生成文件內容
                  String data = "";
                  for (Person person : persons) {
                      data += getPersonString(person) + "\n";
                  }
           
                  // 保存文件內容
                  FileWriter writer = new FileWriter(filename);
                  writer.write(data);
                  writer.close();
                  System.out.println("對象保存完畢。");
              }
           
              private static String getPersonString(Person person) {
                  return person.getName() + "\t" +
                            person.getBirthday().getTime() + "\t" +
                            person.isMale();
              }
           
              // 從文件中讀取 Person 對象
              private static List<Person> readPersons() throws IOException {
                  List<Person> result = new ArrayList<Person>();
           
                  BufferedReader reader = new BufferedReader(new FileReader(filename));
                  String line;
                  while ((line = reader.readLine()) != null) {
                      result.add(getPersonFromString(line));
                  }
           
                  return result;
              }
           
              // 通過一行文件內容生成一個 Person 對象
              private static Person getPersonFromString(String line) {
                  String[] parts = line.split("\t");  // 獲取被分隔的三個部分
           
                  return new Person(
                          parts[0],                               // 姓名
                          new Date(Long.parseLong(parts[1])),     // 出生日期
                          Boolean.parseBoolean(parts[2])          // 是否為男性
                  );
              }
           
              // 顯示 Person 對象
              private static void showPersons(List<Person> persons) {
                  DateFormat dateFormat = DateFormat.getDateTimeInstance();
                  for (Person person : persons) {
                      System.out.println(person.getName() + ", " +
                              dateFormat.format(person.getBirthday()) + ", " +
                              (person.isMale() ? "男" : "女"));
                  }
              }
          }
           
          // 要持久化的類
          class Person {
           
              private String name;        // 姓名
           
              private Date birthday;      // 生日
           
              private boolean male;       // true 表示男性,false 表示女性
           
              Person(String name, Date birthday, boolean male) {
                  this.name = name;
                  this.birthday = birthday;
                  this.male = male;
              }
           
              public String getName() {
                  return name;
              }
           
              public void setName(String name) {
                  this.name = name;
              }
           
              public Date getBirthday() {
                  return birthday;
              }
           
              public void setBirthday(Date birthday) {
                  this.birthday = birthday;
              }
           
              public boolean isMale() {
                  return male;
              }
           
              public void setMale(boolean male) {
                  this.male = male;
              }
          }

          轉載自:http://blog.csdn.net/YidingHe/archive/2009/03/09/3971073.aspx
          posted on 2009-03-16 11:00 天堂露珠 閱讀(234) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 进贤县| 甘南县| 达州市| 都江堰市| 新泰市| 荃湾区| 普陀区| 延吉市| 宿松县| 东宁县| 桦甸市| 扬州市| 琼中| 河源市| 文成县| 白朗县| 麻城市| 图木舒克市| 忻州市| 盐津县| 迁安市| 彭泽县| 旬邑县| 乌兰察布市| 永登县| 阿拉善盟| 全南县| 彭州市| 工布江达县| 临汾市| 鞍山市| 桦川县| 鄂伦春自治旗| 永善县| 扶绥县| 清丰县| 定远县| 沁源县| 新河县| 天全县| 霍山县|