2014-12-12 48 views
-1

我正在製作一個保存媒體項目(如dvd或視頻遊戲)的庫,並保存媒體項目列表的文件。我必須製作一種方法,可以讀取保存文件中的數據,重新創建媒體項目並將其放入列表中。我正在考慮將其標記,但我無法弄清楚如何開始。有什麼建議麼?我正在使用java。每個媒體項目包含一個字符串標題,字符串格式,布爾借用,字符串名稱和字符串日期。該方法將用於啓動程序時加載保存文件。分裂字符串的想法?

+0

用於讀取和寫入數據的簡單文本文件將是綽綽有餘如果需要的話可以,如果你是誰需要閱讀我建議尋找到XML HTTP文件的一個用戶,雖然讀:/ /www.w3schools.com/xml/雖然這個鏈接只顯示你是什麼xml,我建議你做一些關於實現它到java的研究。 – SemperAmbroscus 2014-12-13 00:02:09

+0

爲「MediaItem」創建一個bean,然後使用'XMLEncoder'對其進行序列化,如[如何將Java 2D形狀對象序列化爲XML?](http://stackoverflow.com/q/26579729/418556) – 2014-12-13 00:02:21

+0

爲什麼「字符串日期「不是」日期日期「? – 2014-12-13 00:03:39

回答

0

您可以使用序列化將數據保存到文件並讀回。儘管如此,你將無法閱讀文本。

public class MediaSave { 
    public static class Media implements Serializable{ 
     /** 
     * 
     */ 
     private static final long serialVersionUID = 7452860232014574705L; 
     public String title; 
     public String format; 
     public Boolean borrowed; 
     public String name; 
     public Date date; 
     protected Media(String title, String format, Boolean borrowed, 
       String name, Date date) { 
      super(); 
      this.title = title; 
      this.format = format; 
      this.borrowed = borrowed; 
      this.name = name; 
      this.date = date; 
     } 
     public String toString(){ 
      return title + " " + format + " " + borrowed + " " + name + " " + " " + date ; 
     } 
    } 
    public static void main(String[] args) throws IOException, ClassNotFoundException{ 
     Media[] media = new Media[4]; 
     media[0] = new Media("Avatar1", "dvd",true, "jon1", new Date()); 
     media[1] = new Media("Avatar2", "dvd",true, "jon2", new Date()); 
     media[2] = new Media("Avatar3", "dvd",true, "jon3", new Date()); 
     media[3] = new Media("Avatar4", "dvd",true, "jon4", new Date()); 
     Path p = Paths.get("resources/media.txt"); 
     File f = p.toFile(); 
     if(!f.exists()){ 
      f.createNewFile(); 
     } 


     try(ObjectOutputStream writer = new ObjectOutputStream(new FileOutputStream(f))){ 
      writer.writeInt(media.length); 
      for(Media m : media){ 
      writer.writeObject(m); 
      } 
     } 
     try(ObjectInputStream reader = new ObjectInputStream(new FileInputStream(f))){ 
      int cnt = reader.readInt(); 
      for(int i =0 ; i != cnt;i++){ 
        Media m=(Media)reader.readObject(); 
        System.out.println(m.toString()); 
      } 
     } 
    } 
}