import java.io.*;
class ObjectStream implements Serializable{
//保存对象
public static void saveObject(String fileName,Object obj){
try{
FileOutputStream fi=new FileOutputStream(fileName+".txt");
ObjectOutputStream os=new ObjectOutputStream(fi);
os.writeObject(obj);
os.flush();
}catch(Exception e){System.out.println("savaObject Error");}
}
//提取对象
public static Object openObject(String fileName){
ObjectInputStream oiT=null;
try{
FileInputStream fs=new FileInputStream(fileName+".txt");
ObjectInputStream oi=new ObjectInputStream(fs);
return (Object)oi.readObject();
}catch(Exception e){System.out.println("OpenObject Error");}
System.out.println("Error");
return oiT;
}
}
class TestObject{
static int i=1;
public TestObject(){
System.out.println("OK");
}
public static void main(String args[]){
ObjectStream.saveObject("testObject",new TestObject());
System.out.println(ObjectStream.openObject("testObject").toString());
}
}
为什么保存对象时总是扔出异常呀。
谁能告诉我ObjectInputStream readObject()具体使用方法呀?
class ObjectStream implements Serializable{
//保存对象
public static void saveObject(String fileName,Object obj){
try{
FileOutputStream fi=new FileOutputStream(fileName+".txt");
ObjectOutputStream os=new ObjectOutputStream(fi);
os.writeObject(obj);
os.flush();
}catch(Exception e){System.out.println("savaObject Error");}
}
//提取对象
public static Object openObject(String fileName){
ObjectInputStream oiT=null;
try{
FileInputStream fs=new FileInputStream(fileName+".txt");
ObjectInputStream oi=new ObjectInputStream(fs);
return (Object)oi.readObject();
}catch(Exception e){System.out.println("OpenObject Error");}
System.out.println("Error");
return oiT;
}
}
class TestObject{
static int i=1;
public TestObject(){
System.out.println("OK");
}
public static void main(String args[]){
ObjectStream.saveObject("testObject",new TestObject());
System.out.println(ObjectStream.openObject("testObject").toString());
}
}
为什么保存对象时总是扔出异常呀。
谁能告诉我ObjectInputStream readObject()具体使用方法呀?
改为:
public static void saveObject(String fileName,Serializable obj)因为:要序列化的对象必须要实现:Serializable接口。另外:
class TestObject{ 要加上:class TestObject implements Serializable
为什么要Serializable呢?
因为实现serializable接口的作用是就是可以把对象存到字节流,然后可以恢复!
所以你想如果你的对象没实现序列化怎么才能进行网络传输呢,要网络传输就得转为字节流,所以就得实现序列化
所以你必须implements Serializable这样。
但是你的TestObject又没有序列化,所以当然会有错误咯!
import java.io.*; class TestObject implements Serializable{
public static void saveObject(String fileName,Object obj){
try{
FileOutputStream fi=new FileOutputStream(fileName+".txt");
ObjectOutputStream os=new ObjectOutputStream(fi);
os.writeObject(obj);
os.flush();
}catch(Exception e){System.out.println("saveObject Error");}
}
//提取对象
public static Object openObject(String fileName){
ObjectInputStream oiT=null;
try{
FileInputStream fs=new FileInputStream(fileName+".txt");
ObjectInputStream oi=new ObjectInputStream(fs);
return (Object)oi.readObject();
}catch(Exception e){System.out.println("OpenObject Error");}
System.out.println("Error");
return oiT;
}
static int i=1;
public TestObject(){
System.out.println("OK");
}
public static void main(String args[]){
saveObject("testObject",new TestObject());
System.out.println(openObject("testObject").toString());
}
}
class ObjectStream {
//保存对象
public static void saveObject(String fileName,Object obj){
try{
FileOutputStream fi=new FileOutputStream(fileName+".txt");
ObjectOutputStream os=new ObjectOutputStream(fi);
os.writeObject(obj);
os.flush();
}catch(Exception e){System.out.println("savaObject Error");}
}
//提取对象
public static Object openObject(String fileName){
ObjectInputStream oiT=null;
try{
FileInputStream fs=new FileInputStream(fileName+".txt");
ObjectInputStream oi=new ObjectInputStream(fs);
return (Object)oi.readObject();
}catch(Exception e){System.out.println("OpenObject Error");}
System.out.println("Error");
return oiT;
}
}
public class TestObject implements Serializable{
static int i=1;
public TestObject(){
System.out.println("OK");
}
public String toString()
{
return getClass().getName();
}
public static void main(String args[]){
ObjectStream.saveObject("testObject",new TestObject());
System.out.println(ObjectStream.openObject("testObject"));
}
}