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

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

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

    隨筆 - 117  文章 - 72  trackbacks - 0

    聲明:原創(chuàng)作品(標(biāo)有[原]字樣)轉(zhuǎn)載時(shí)請(qǐng)注明出處,謝謝。

    常用鏈接

    常用設(shè)置
    常用軟件
    常用命令
     

    訂閱

    訂閱

    留言簿(7)

    隨筆分類(lèi)(130)

    隨筆檔案(123)

    搜索

    •  

    積分與排名

    • 積分 - 156642
    • 排名 - 390

    最新評(píng)論

    說(shuō)數(shù)據(jù)持久化,初學(xué)者可能還不太懂;但要說(shuō)把數(shù)據(jù)保存到文件,這誰(shuí)都懂了。為什么說(shuō)持久化就是把數(shù)據(jù)保存到文件?持久化指的就是當(dāng)程序退出后,其中的數(shù)據(jù)能夠保留下來(lái),供程序再次運(yùn)行的時(shí)候使用。這些數(shù)據(jù)保留在什么地方最好呢?當(dāng)然是文件里。

    保存到文件是數(shù)據(jù)持久化最常用的方式,除此之外,還可以把數(shù)據(jù)保存到數(shù)據(jù)庫(kù),或者發(fā)送到其它機(jī)器,這都是持久化。不過(guò)保存在文件是最簡(jiǎn)單的方式。具體來(lái)說(shuō)就是:選取需要保存的數(shù)據(jù),按照一定的格式組織起來(lái),然后寫(xiě)入文件。下面是一個(gè)簡(jiǎn)單的例子:


    import java.io.*;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import java.text.DateFormat;
     
    /**2009-3-15
     * 持久化示例。如何將內(nèi)存中的數(shù)據(jù)保存起來(lái),并沒(méi)有一定的格式,任何人
     * 都可以根據(jù)自己的喜好來(lái)制定。持久化需要文件操作,所以請(qǐng)務(wù)必先弄懂
     * 如何讀寫(xiě)文件。
     */
    public class Persistant {
     
        //文件名可隨意指定,你可以用文本編輯器打開(kāi)這個(gè)文件(注意,記事本無(wú)法處理?yè)Q行)
        static String filename = "persons.data";
     
        public static void main(String[] args) throws Exception {
            // 將這個(gè)程序運(yùn)行兩遍。
            // 第一遍它會(huì)創(chuàng)建一些 Person 對(duì)象并保存到文件;
            // 第二遍它會(huì)從文件中讀取對(duì)象數(shù)據(jù)并顯示出來(lái)。
            if (!new File(filename).exists()) {
                createAndSave();
            } else {
                readAndShow();
            }
        }
     
        // 生成并保存 Person 對(duì)象
        private static void createAndSave() throws IOException {
            List<Person> persons = createPersons();
            savePersons(persons);
        }
     
        // 讀取并顯示 Person 對(duì)象
        private static void readAndShow() throws IOException {
            List<Person> persons = readPersons();
            showPersons(persons);
        }
     
        // 創(chuàng)建要保存的 Person 對(duì)象
        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 對(duì)象到文件。保存格式為:
        // 1、每個(gè) Person 一行
        // 2、每行依次存放 name、birthday、male 三個(gè)屬性值,用 tab 隔開(kāi)
        // 3、birthday 屬性保存的是毫秒數(shù),male 屬性保存的是字符串
        private static void savePersons(List<Person> persons) throws IOException {
     
            // 生成文件內(nèi)容
            String data = "";
            for (Person person : persons) {
                data += getPersonString(person) + "\n";
            }
     
            // 保存文件內(nèi)容
            FileWriter writer = new FileWriter(filename);
            writer.write(data);
            writer.close();
            System.out.println("對(duì)象保存完畢。");
        }
     
        private static String getPersonString(Person person) {
            return person.getName() + "\t" +
                      person.getBirthday().getTime() + "\t" +
                      person.isMale();
        }
     
        // 從文件中讀取 Person 對(duì)象
        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;
        }
     
        // 通過(guò)一行文件內(nèi)容生成一個(gè) Person 對(duì)象
        private static Person getPersonFromString(String line) {
            String[] parts = line.split("\t");  // 獲取被分隔的三個(gè)部分
     
            return new Person(
                    parts[0],                               // 姓名
                    new Date(Long.parseLong(parts[1])),     // 出生日期
                    Boolean.parseBoolean(parts[2])          // 是否為男性
            );
        }
     
        // 顯示 Person 對(duì)象
        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() ? "男" : "女"));
            }
        }
    }
     
    // 要持久化的類(lèi)
    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;
        }
    }

    轉(zhuǎn)載自:http://blog.csdn.net/YidingHe/archive/2009/03/09/3971073.aspx
    posted on 2009-03-16 11:00 天堂露珠 閱讀(242) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Java
    主站蜘蛛池模板: 亚洲色精品VR一区区三区| 特黄特色大片免费| 免费无码黄动漫在线观看| 色窝窝亚洲AV网在线观看| 亚洲免费视频一区二区三区| a在线免费观看视频| 亚洲六月丁香六月婷婷蜜芽| 免费一级国产生活片| 久久精品无码专区免费青青| 亚洲精品av无码喷奶水糖心| 亚洲不卡中文字幕无码| 毛片免费全部播放一级| 亚洲一区二区三区免费| 亚洲国产日韩在线人成下载| 亚洲国产专区一区| 国产免费看JIZZ视频| 黄色视屏在线免费播放| 亚洲日本人成中文字幕| a级亚洲片精品久久久久久久| 国产日本一线在线观看免费| jizz在线免费播放| 学生妹亚洲一区二区| 亚洲妇熟XXXX妇色黄| 国产禁女女网站免费看| 69视频在线是免费观看| 本道天堂成在人线av无码免费 | 亚洲无码一区二区三区| 亚洲日韩v无码中文字幕| 黄a大片av永久免费| 十八禁无码免费网站| yellow视频免费看| 亚洲爆乳大丰满无码专区| 久久精品亚洲中文字幕无码麻豆| 亚洲国产成人爱av在线播放| 女人被男人桶得好爽免费视频 | 毛片免费观看的视频在线| 三年片在线观看免费大全电影 | AV免费网址在线观看| 69av免费视频| 未满十八18禁止免费无码网站 | 亚洲男人的天堂www|