使用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; }