怎么用循环的方法来实现 对象序列化的 写入或读取?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | package com.imooc.io; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class ProductTest { public static void main(String[] args) throws ClassNotFoundException { // TODO Auto-generated method stub FileOutputStream fos; FileInputStream fis; ObjectOutputStream oos; ObjectInputStream ois; Product iphone= new Product( 123 , "iphone" , "telephone" , 4888.0 ); Product ipad= new Product( 234 , "ipad" , "computer" , 5088.0 ); Product macbook= new Product( 345 , "macbook" , "computer" , 10688.0 ); Product iwatch= new Product( 256 , "iwatch" , "telephone" , 4799.0 ); try { fos= new FileOutputStream( "test.txt" ); oos= new ObjectOutputStream(fos); oos.writeObject(iphone); //逐个写入,可否有其他方法? oos.writeObject(ipad); oos.writeObject(macbook); oos.writeObject(iwatch); oos.flush(); fos.close(); oos.close(); fis= new FileInputStream( "test.txt" ); ois= new ObjectInputStream(fis); System.out.println( "Apple系列产品信息:" ); System.out.println((Product)(ois.readObject())); //一个一个地读取,有没有其他办法? System.out.println((Product)(ois.readObject())); System.out.println((Product)(ois.readObject())); System.out.println((Product)(ois.readObject())); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } |
大家好,如上代码,可以实现5-1的练习题要求,但也让我提出了一个疑问,有没有办法像读取字节或字符一样,使用循环的方法实现读写呢? 尝试了 当ois.readObject()!=null时进行读取,可以成功读取,但最后会抛出异常,求高人指教,谢谢了.
22
收起
正在回答 回答被采纳积分+1
1回答
Android零基础入门2018版
- 参与学习 人
- 提交作业 5461 份
- 解答问题 7235 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧