黑马程序员技术交流社区

标题: 求解释 [打印本页]

作者: 高阳    时间: 2012-12-26 22:01
标题: 求解释
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();
        }
}


作者: 高阳    时间: 2012-12-26 22:03
我还没打问题呢,怎么发出去了,
     是不是用什么对象写入的,读取就要用什么对象来接收?
作者: 高阳    时间: 2012-12-26 22:05
还有,怎么解决写入文件时乱码的问题啊
作者: 高阳    时间: 2012-12-27 14:03
为什么没人回答啊,老师呢
作者: 郭俊    时间: 2012-12-27 14:39
   1,写入什么对象,读取就要用什么对象来接收!  你想啊,加入你存的是Teacher,取的时候用Student,能取吗,答案是否定的。
  2,至于第二个乱码的问题,则是存取文本文件或者字节流(mp3,jpg等)的问题了。
       从你代码可以看出你存的是Person那就没必要用Object,直接都用泛型<Person>就好。
       写入文件,因为存的是文本文件,就直接用
       BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\12.txt"));   遍历不用了吧




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2