A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高阳 中级黑马   /  2012-12-26 22:01  /  1066 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class ObjectOuputStreamDemo {

        public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {               
                Write();
                Read();               
        }                       
        private static void Read() throws IOException, IOException, ClassNotFoundException {
       
                ObjectInputStream oi=new ObjectInputStream(new FileInputStream("d:\\12.txt"));
                        ArrayList<Person> ect = (ArrayList<Person>)oi.readObject();       
                for(Person arr: ect){
                        System.out.println(arr.getAge()+"***"+arr.getName());
                }
                oi.close();
}
//如果不用集合,会报异常,无法解决,只能try,catch
        private static void Write() throws FileNotFoundException, IOException {
                ObjectOutputStream os=new ObjectOutputStream(new FileOutputStream("d:\\12.txt"));
                Scanner sc=new Scanner(System.in);
                ArrayList<Person>array=new ArrayList<Person>();
                for(int i=1;i<=3;i++){
                        System.out.println("请输入第"+i+"个学生的姓名");
                        String name=sc.nextLine();
                        System.out.println("请输入第"+i+"个学生的年龄");
                        int age=Integer.parseInt(sc.nextLine());                       
                        Person p=new Person(name,age);
                        array.add(p);       
                }
                os.writeObject(array);
                //b=true;
                os.close();
        }
}

评分

参与人数 1技术分 +1 收起 理由
邵天强 + 1 鼓励一下

查看全部评分

4 个回复

倒序浏览
我还没打问题呢,怎么发出去了,
     是不是用什么对象写入的,读取就要用什么对象来接收?
回复 使用道具 举报
还有,怎么解决写入文件时乱码的问题啊
回复 使用道具 举报
为什么没人回答啊,老师呢
回复 使用道具 举报
   1,写入什么对象,读取就要用什么对象来接收!  你想啊,加入你存的是Teacher,取的时候用Student,能取吗,答案是否定的。
  2,至于第二个乱码的问题,则是存取文本文件或者字节流(mp3,jpg等)的问题了。
       从你代码可以看出你存的是Person那就没必要用Object,直接都用泛型<Person>就好。
       写入文件,因为存的是文本文件,就直接用
       BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\12.txt"));   遍历不用了吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马