当前位置: 技术问答>java相关
ObjectInputStream.readObject()的问题!!!
来源: 互联网 发布时间:2015-02-01
本文导语: import java.io.*; import java.util.*; public class ree { public static void main(String args[]) { try{ File file = new File("e.txt"); FileOutputStream fos = new FileOutputStream(file); Objec...
import java.io.*;
import java.util.*;
public class ree
{
public static void main(String args[])
{
try{
File file = new File("e.txt");
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
Vector vector = new Vector();
String s = new String("wwww");
vector.add(s);
oos.writeObject(s);
oos.close();
fos.close();
}catch(IOException e){
System.out.println("IOException e");
}catch(ClassNotFoundException se){
System.out.println("ClassNotFoundException se");
}
}
}
//////////////////////////////////////////////////////////////////////
import java.io.*;
import java.util.*;
public class ree
{
public static void main(String args[])
{
try{
File file = new File("e.txt");
FileInputStream fos = new FileInputStream(file);
ObjectInputStream oos = new ObjectInputStream(fos);
Vector ob = (Vector)oos.readObject();
System.out.println(ob.toString());
oos.close();
fos.close();
}catch(IOException e){
System.out.println("IOException e");
}catch(ClassNotFoundException se){
System.out.println("ClassNotFoundException se");
}
}
}
////////////////////////////////////////////////////////////////////
class kk
{
int i;
String d;
}
/////////////
以上代码没问题,但改为
kk p = new kk();
p.i = 0;
p.d = "sd";
oos.writeObject(p);
////////////////////////////////
kk ob = (kk)oos.readObject();
////////////////////////////////
写入成功,无错误
但读的时候
kk ob = (kk)oos.readObject();
抛出 IOException 为什么???(写的时候都写入了) 如何才能读出一个 kk 类呢???
import java.util.*;
public class ree
{
public static void main(String args[])
{
try{
File file = new File("e.txt");
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
Vector vector = new Vector();
String s = new String("wwww");
vector.add(s);
oos.writeObject(s);
oos.close();
fos.close();
}catch(IOException e){
System.out.println("IOException e");
}catch(ClassNotFoundException se){
System.out.println("ClassNotFoundException se");
}
}
}
//////////////////////////////////////////////////////////////////////
import java.io.*;
import java.util.*;
public class ree
{
public static void main(String args[])
{
try{
File file = new File("e.txt");
FileInputStream fos = new FileInputStream(file);
ObjectInputStream oos = new ObjectInputStream(fos);
Vector ob = (Vector)oos.readObject();
System.out.println(ob.toString());
oos.close();
fos.close();
}catch(IOException e){
System.out.println("IOException e");
}catch(ClassNotFoundException se){
System.out.println("ClassNotFoundException se");
}
}
}
////////////////////////////////////////////////////////////////////
class kk
{
int i;
String d;
}
/////////////
以上代码没问题,但改为
kk p = new kk();
p.i = 0;
p.d = "sd";
oos.writeObject(p);
////////////////////////////////
kk ob = (kk)oos.readObject();
////////////////////////////////
写入成功,无错误
但读的时候
kk ob = (kk)oos.readObject();
抛出 IOException 为什么???(写的时候都写入了) 如何才能读出一个 kk 类呢???
|
对于你的前两个程序,我有几个问题:
1.你第一个程序中写入的对象为String,而你第二个程序中读出的对象却为Vector.此时jdk会
有异常:java.lang.ClassCastException:java.lang.String。
2.第二个程序中要读出对象,所以要注意使程序能读出写入对象的文件:"e.txt",让e.txt在第
二个程序的根目录下。
3.关于类kk不能读出的问题,你看是不是上面的两个原因。但要注意的是要序列化的类必须要实现Serializable接口,例如这样:
class kk implements Serializable{
{
int i;
String d;
}.
1.你第一个程序中写入的对象为String,而你第二个程序中读出的对象却为Vector.此时jdk会
有异常:java.lang.ClassCastException:java.lang.String。
2.第二个程序中要读出对象,所以要注意使程序能读出写入对象的文件:"e.txt",让e.txt在第
二个程序的根目录下。
3.关于类kk不能读出的问题,你看是不是上面的两个原因。但要注意的是要序列化的类必须要实现Serializable接口,例如这样:
class kk implements Serializable{
{
int i;
String d;
}.