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

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

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

    隨筆-199  評論-203  文章-11  trackbacks-0

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

     

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

     

    1. import java.io.*;   
    2. import java.util.ArrayList;   
    3. import java.util.Date;   
    4. import java.util.List;   
    5.     
    6. /**  
    7.  * 持久化示例。如何將內存中的數(shù)據(jù)保存起來,并沒有一定的格式,任何人  
    8.  * 都可以根據(jù)自己的喜好來制定。持久化需要文件操作,所以請務必先弄懂  
    9.  * 如何讀寫文件。  
    10.  */  
    11. public class Persistant {   
    12.     
    13.     // 文件名可隨意指定,你可以用文本編輯器打開這個文件(注意,記事本無法處理換行)   
    14.     static String filename = "persons.data";   
    15.     
    16.     public static void main(String[] args) throws Exception {   
    17.         // 將這個程序運行兩遍。   
    18.         // 第一遍它會創(chuàng)建一些 Person 對象并保存到文件;   
    19.         // 第二遍它會從文件中讀取對象數(shù)據(jù)并顯示出來。   
    20.         if (!new File(filename).exists()) {   
    21.             createAndSave();   
    22.         } else {   
    23.             readAndShow();   
    24.         }   
    25.     }   
    26.     
    27.     // 生成并保存 Person 對象   
    28.     private static void createAndSave() throws IOException {   
    29.         List<Person> persons = createPersons();   
    30.         savePersons(persons);   
    31.     }   
    32.     
    33.     // 讀取并顯示 Person 對象   
    34.     private static void readAndShow() throws IOException {   
    35.         List<Person> persons = readPersons();   
    36.         showPersons(persons);   
    37.     }   
    38.     
    39.     // 創(chuàng)建要保存的 Person 對象   
    40.     private static List<Person> createPersons() {   
    41.         List<Person> result = new ArrayList<Person>();   
    42.         result.add(new Person("張三"new Date(), true));   
    43.         result.add(new Person("李四"new Date(), false));   
    44.         result.add(new Person("王五"new Date(), true));   
    45.         return result;   
    46.     }   
    47.     
    48.     // 保存 Person 對象到文件。保存格式為:   
    49.     // 1、每個 Person 一行   
    50.     // 2、每行依次存放 name、birthday、male 三個屬性值,用 tab 隔開   
    51.     // 3、birthday 屬性保存的是毫秒數(shù),male 屬性保存的是字符串   
    52.     private static void savePersons(List<Person> persons) throws IOException {   
    53.     
    54.         // 生成文件內容   
    55.         String data = "";   
    56.         for (Person person : persons) {   
    57.             data += getPersonString(person) + "\n";   
    58.         }   
    59.     
    60.         // 保存文件內容   
    61.         FileWriter writer = new FileWriter(filename);   
    62.         writer.write(data);   
    63.         writer.close();   
    64.         System.out.println("對象保存完畢。");   
    65.     }   
    66.     
    67.     private static String getPersonString(Person person) {   
    68.         return person.getName() + "\t" + person.getBirthday().getTime() + "\t" + person.isMale();   
    69.     }   
    70.     
    71.     // 從文件中讀取 Person 對象   
    72.     private static List<Person> readPersons() throws IOException {   
    73.         List<Person> result = new ArrayList<Person>();   
    74.     
    75.         BufferedReader reader = new BufferedReader(new FileReader(filename));   
    76.         String line;   
    77.         while ((line = reader.readLine()) != null) {   
    78.             result.add(getPersonFromString(line));   
    79.         }   
    80.     
    81.         return result;   
    82.     }   
    83.     
    84.     // 通過一行文件內容生成一個 Person 對象   
    85.     private static Person getPersonFromString(String line) {   
    86.         String[] parts = line.split("\t");  // 獲取被分隔的三個部分   
    87.     
    88.         return new Person(   
    89.                 parts[0],                               // 姓名   
    90.                 new Date(Long.parseLong(parts[1])),     // 出生日期   
    91.                 Boolean.parseBoolean(parts[2])          // 是否為男性   
    92.         );   
    93.     }   
    94.     
    95.     // 顯示 Person 對象   
    96.     private static void showPersons(List<Person> persons) {   
    97.         for (Person person : persons) {   
    98.             System.out.println(person.getName() + ", " +   
    99.                     person.getBirthday() + ", " +   
    100.                     (person.isMale() ? "男" : "女"));   
    101.         }   
    102.     }   
    103. }   
    104.     
    105. // 要持久化的類   
    106. class Person {   
    107.     
    108.     private String name;        // 姓名   
    109.     
    110.     private Date birthday;      // 生日   
    111.     
    112.     private boolean male;       // true 表示男性,false 表示女性   
    113.     
    114.     Person(String name, Date birthday, boolean male) {   
    115.         this.name = name;   
    116.         this.birthday = birthday;   
    117.         this.male = male;   
    118.     }   
    119.     
    120.     public String getName() {   
    121.         return name;   
    122.     }   
    123.     
    124.     public void setName(String name) {   
    125.         this.name = name;   
    126.     }   
    127.     
    128.     public Date getBirthday() {   
    129.         return birthday;   
    130.     }   
    131.     
    132.     public void setBirthday(Date birthday) {   
    133.         this.birthday = birthday;   
    134.     }   
    135.     
    136.     public boolean isMale() {   
    137.         return male;   
    138.     }   
    139.     
    140.     public void setMale(boolean male) {   
    141.         this.male = male;   
    142.     }   
    143. }  


    轉:http://blog.csdn.net/YidingHe/archive/2009/03/09/3971073.aspx
    posted on 2009-03-10 07:52 Werther 閱讀(4113) 評論(0)  編輯  收藏 所屬分類: 10.Java
    主站蜘蛛池模板: 亚洲天然素人无码专区| 亚洲午夜国产精品| 亚洲成熟丰满熟妇高潮XXXXX| 蜜桃AV无码免费看永久| 亚洲电影免费在线观看| 三年片在线观看免费观看大全一| 久久国产亚洲电影天堂| 午夜理伦剧场免费| 亚洲精品人成电影网| 亚洲中文无码永久免费| 亚洲中文无码mv| 一本久到久久亚洲综合| yellow免费网站| 亚洲色无码一区二区三区| 日本黄色动图免费在线观看| 久久久久久久亚洲Av无码| 成人午夜免费福利视频| 亚洲AV无码一区二区三区久久精品 | 无码乱肉视频免费大全合集| 亚洲国产视频一区| 成年人免费观看视频网站| 色费女人18女人毛片免费视频| 亚洲精品国产综合久久一线| a国产成人免费视频| 337p日本欧洲亚洲大胆精品555588 | 亚洲an天堂an在线观看| 日本妇人成熟免费中文字幕| 亚洲av片在线观看| 亚洲精品无码成人片久久| 免费国产黄网站在线观看| 一本色道久久综合亚洲精品蜜桃冫| 永久黄网站色视频免费直播 | 亚洲色成人网站WWW永久| 99精品热线在线观看免费视频| 77777亚洲午夜久久多喷| 亚洲成av人片一区二区三区| 在线观看免费无码专区| 亚洲伊人久久精品| 亚洲性日韩精品一区二区三区 | 国产午夜成人免费看片无遮挡 | 亚洲热线99精品视频|