黑马程序员技术交流社区

标题: IO中的问题 [打印本页]

作者: pthuakai    时间: 2013-4-3 16:52
标题: IO中的问题
本帖最后由 pthuakai 于 2013-4-8 12:22 编辑

import java.io.*;
class ObjectStreamDemo {
public static void main(String[] args)throws IOException {
  writeObj();
}
public static void readObj()throws IOException
{
  ObjectInputStream ois=new ObjectInputStream(new FileInputStream("obj.txt"));
  Person p=(Person)ois.readObject();
  System.out.println(p);
  ois.close() ;
}
public static void writeObj()throws IOException
{
  ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("obj.txt"));
  oos.writeObject(new Person("lisi",39));
  oos.close();
}
}
class Person
{
String name;
int age;
Person(String name,int age)
{
  this.name=name;
  this.age=age;
}
public String toString()
{
  return name+":"+age;
}
}


作者: 郭兴业    时间: 2013-4-3 17:06
出现了ClassNotFoundException,找不你这个类
作者: 黄玉昆    时间: 2013-4-3 22:14
本帖最后由 黄玉昆 于 2013-4-3 22:16 编辑

建议:
1、希望你将代码写入代码框中,这样可以让大家更好的帮你解答问题,谢谢
2、希望你可以将你的问题写出来,这样你以后看到自己的这个帖子,你能一眼就看出你这个程序的问题。
3、如果你能在代码加上适当的注释就更perfect了。谢谢
具体操作可看:http://bbs.itheima.com/thread-42978-1-1.html

作者: pthuakai    时间: 2013-4-4 15:14
发表于 昨天 17:06 |只看该作者 出现了ClassNotFoundException,找不你这个类
如果我要能找到问题,就不发帖了,所以你能帮忙改改不?
作者: 何俊森    时间: 2013-4-7 09:52
  1. import java.io.*;

  2. class ObjectStreamDemo {
  3.         public static void main(String[] args) throws IOException {
  4.                 writeObj();
  5.         }

  6.         public static void readObj() throws IOException, Exception {
  7.                 ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
  8.                                 "obj.txt"));
  9.                 Person p = (Person) ois.readObject();
  10.                 System.out.println(p);
  11.                 ois.close();
  12.         }

  13.         public static void writeObj() throws IOException {
  14.                 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(
  15.                                 "obj.txt"));
  16.                 oos.writeObject(new Person("lisi", 39));
  17.                 oos.close();
  18.         }
  19. }

  20. class Person implements Serializable{
  21.         String name;
  22.         int age;

  23.         Person(String name, int age) {
  24.                 this.name = name;
  25.                 this.age = age;
  26.         }

  27.         public String toString() {
  28.                 return name + ":" + age;
  29.         }
  30. }
复制代码
楼主程序中Person类要实现序列化接口,才能进行二进制数据流传输。
作者: 梁航斌    时间: 2013-4-7 11:13
今后要学着看异常,碰到不会的时候要学着查文档,像这样

运行后出现异常,首先看看是什么异常。java.io.NotSerializableException: Person,说明是io包里面的,那么打开api文档

找到这个异常,看看他的提示,“当实例需要具有序列化接口时,抛出此异常。序列化运行时或实例的类会抛出此异常。参数应该为类的名称。”
然后发现下面有提供一个接口

再找到它

然后了解到这个异常的原因是因为 NotSerializableException 没有实现序列化接口导致的,所以要让Preson类实现Serializable

作者: 黄玉昆    时间: 2013-4-7 18:57
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢




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