集册 Java实例教程 使用ObjectInputStream顺序读取对象文件并显示每个记录。

使用ObjectInputStream顺序读取对象文件并显示每个记录。

欢马劈雪     最近更新时间:2020-01-02 10:19:05

595
使用ObjectInputStream顺序读取对象文件并显示每个记录。

import java.io.EOFException;     

import java.io.IOException;      
/**
时代Java公众号 - N o w J a  v a . c o m 提供 
**/

import java.io.ObjectInputStream;

import java.nio.file.Files;

import java.nio.file.Paths;


public class Main

{

   private static ObjectInputStream input;


   public static void main(String[] args)

   {

      openFile();

      readRecords();

      closeFile();
      /*
      时 代 J a v a 公 众 号 - N o w J a v  a . c o m 提 供
      */

   } 


   // enable user to select file to open

   public static void openFile()

   {

      try // open file

      {

         input = new ObjectInputStream(          

            Files.newInputStream(Paths.get("clients.ser")));

      } 

      catch (IOException ioException)

      {

         System.err.println("Error opening file.");

         System.exit(1);

      } 

   }


   // read record from file

   public static void readRecords()

   {

      System.out.printf("%-10s%-12s%-12s%10s%n", "Account",

         "First Name", "Last Name", "Balance");


      try 

      {

         while (true) // loop until there is an EOFException

         {

            Account record = (Account) input.readObject();


            // display record contents

            System.out.printf("%-10d%-12s%-12s%10.2f%n",  

               record.getAccount(), record.getFirstName(), 

               record.getLastName(), record.getBalance());

         } 

      }

      catch (EOFException endOfFileException)

      {

         System.out.printf("%nNo more records%n");

      } 

      catch (ClassNotFoundException classNotFoundException)

      {

         System.err.println("Invalid object type. Terminating.");

      } 

      catch (IOException ioException)

      {

         System.err.println("Error reading from file. Terminating.");

      } 

   } 


   // close file and terminate application

   public static void closeFile()

   {

      try

      {

         if (input != null)

            input.close();

      } 

      catch (IOException ioException)

      {

         System.err.println("Error closing file. Terminating.");

         System.exit(1);

      } 

   } 

}



class Account implements java.io.Serializable

{

   private int account;

   private String firstName;

   private String lastName;

   private double balance;

   

   // initializes an Account with default values

   public Account() 

   {

      this(0, "", "", 0.0); // call other constructor

   } 

  

   // initializes an Account with provided values

   public Account(int account, String firstName, 

      String lastName, double balance)

   {

      this.account = account;

      this.firstName = firstName;

      this.lastName = lastName;

      this.balance = balance;

   }


   // set account number   

   public void setAccount(int acct)

   {

      this.account = account;

   } 


   // get account number   

   public int getAccount() 

   { 

      return account; 

   } 

   

   // set first name   

   public void setFirstName(String firstName)

   {

      this.firstName = firstName;

   } 


   
展开阅读全文