<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 117  文章 - 72  trackbacks - 0

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

    常用鏈接

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

    訂閱

    訂閱

    留言簿(7)

    隨筆分類(130)

    隨筆檔案(123)

    搜索

    •  

    積分與排名

    • 積分 - 155667
    • 排名 - 391

    最新評論

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

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


    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 天堂露珠 閱讀(235) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 国产亚洲精品美女久久久久| 亚洲欧美日韩自偷自拍| 成人a毛片视频免费看| 日韩在线免费播放| 亚洲综合av一区二区三区| 无人在线直播免费观看| 亚洲无线一二三四区| 1000部拍拍拍18勿入免费视频软件| 亚洲国产综合专区电影在线 | 麻豆69堂免费视频| 国产免费av片在线无码免费看| 亚洲色偷偷偷综合网| 免费无码黄网站在线观看| 国产精品亚洲精品久久精品| 国产jizzjizz免费看jizz| 一级毛片在线免费视频| 国产偷国产偷亚洲清高动态图| aa毛片免费全部播放完整| 国产AV无码专区亚洲Av| 午夜爽爽爽男女免费观看影院| 亚洲黄色在线视频| 91香蕉成人免费网站| 亚洲成a人无码亚洲成www牛牛 | 国产日韩久久免费影院| 亚洲成av人影院| 久久国内免费视频| 精品女同一区二区三区免费播放 | www.亚洲色图.com| 国产精品网站在线观看免费传媒| 西西人体44rt高清亚洲| 黄页网站在线看免费| 亚洲av永久中文无码精品综合| 亚洲成人影院在线观看| 久久国产乱子伦精品免费强| 亚洲国产亚洲综合在线尤物| 国产大片线上免费看| 97无码人妻福利免费公开在线视频| 久久久久亚洲av无码专区| 成人免费视频试看120秒| 国产VA免费精品高清在线| 亚洲国产成人久久77|