2017-05-04 46 views
0

我试图将我的数据从我的程序保存到文件中,但它不会保存添加的书籍或学生。该程序将运行,但不会保存任何数据,也不会允许程序保存数据。Java库系统程序 - 保存程序

private static void addBook() { 
     // TODO Auto-generated method stub 
     int isbn, numbercopies; 
     String title, author, publisher; 


     System.out.println("\nEnter Title: "); 
     title = in.next(); 

     System.out.println("\nEnter Author: "); 
     author = in.next(); 

     System.out.println("\nEnter Publisher: "); 
     publisher = in.next(); 

     System.out.println("\nEnter ISBN: "); 
     isbn = in.nextInt(); 

     System.out.println("\nEnter Number of Copies:"); 
     numbercopies = in.nextInt(); 


// creating book object 

     Book b = new Book(isbn, numbercopies, title, author, publisher); 

// adding book to library via method 

     lib.addBook(b); 
    } 

    private static void addStudent(){ 

     int sID, age; 
     String FirstName, LastName; 




     System.out.println("\nEnter Full Name: "); 
     LastName = in.nextLine(); 
     FirstName = in.nextLine(); 

     System.out.println("\nEnter Age: "); 
     age = in.nextInt(); 

     System.out.println("\nEnter Student ID:"); 
     sID = in.nextInt(); 

     Students s = new Students(age, sID, FirstName, LastName); 

// adding student to student library 

     slib.addStudent(s); 

    } 

// method to save and quit 


    private static void saveAndQuit() { 
     // TODO Auto-generated method stub 
     System.out.println("Enter file name for Student: "); 
     fileName = in.next(); 

// stop the program from running with the boolean, through break   
     running = false; 

// writing to file  
     FileOutputStream fos = null; 
     ObjectOutputStream out = null; 


     try { 

      fos = new FileOutputStream(fileName); 
      out = new ObjectOutputStream(fos); 
      out.writeObject(slib); 



//closing the stream    
      fos.close(); 
      out.close(); 

     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 


// getting the file input 

    private static void loadScript(String name) { 
     // TODO Auto-generated method stub 
     FileInputStream fis = null; 
     ObjectInputStream in = null; 
     File file = new File(name); 
     if (file.exists()) { 
      try { 
       fis = new FileInputStream(file); 
       in = new ObjectInputStream(fis); 
       lib = (Library) in.readObject(); 
       fis.close(); 
       in.close(); 

      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (ClassNotFoundException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     } else { 
      System.out.println("\nThe file does not exist!"); 
     } 

    } 
+0

通常在像Stackoverflow这样的论坛上,成员为编码器遇到的问题提供了解决方案。好帖子是发布你已经尝试过的以及你的错误在哪里。例如“删除一本书”的代码和哪部分似乎失败了。这将有助于会员尽快为您提供帮助。此外,成员还会将此类帖子看作未尝试过的人,并希望statckoverflow用户为其编写代码。发布您的删除或保存代码以及您尝试的内容。不是整个程序都很难提供帮助。成员需要看到你做了你的研究。 – Renier

+0

对不起,我已编辑帖子 –

+0

它是否陷入困境?它是否创建任何文件或文件是空白的? – Renier

回答

0

没有看到您正在写入文件的类是否实现了序列化。

如果是勾选此链接,还会注意到您正在使用的Java版本。现在硬编码的文件路径和名称只是为了看看它的工作。

https://www.mkyong.com/java/how-to-write-an-object-to-file-in-java/

也把一些日志或控制台打印只是为了看看那里的代码去。

+0

我试试这个,看看它是否工作,但我认为我的保存方法有问题 –

+0

只要确保对象“slib”是序列化或实现Serializable 。 – Renier