2014-12-12 52 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()); 
      } 
     } 
    } 
}