问题描述
- java 对象输出流单独运行写对象对象会被写出来 但是也会报错 单独问我行读对像直接报错
-
package com.vince;import java.io.Serializable;
public class Cat implements Serializable {
private String name;
private int age;
private transient String color;
public Cat(){} public Cat(String name,int age){ this.name=name; this.age=age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Cat [name=" + name + ", age=" + age + "]"; }
}
这是这个Cat类
package com.vince;import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;public class ObjectStreamDemo {
public static void objectIn(){try { InputStream in = new FileInputStream("d:\object.abc"); BufferedInputStream bs =new BufferedInputStream(in); ObjectInputStream ois = new ObjectInputStream(bs); Cat cat = (Cat) ois.readObject(); System.out.println(cat); ois.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void objectOut(){ Cat cat =new Cat("花花",3); try { OutputStream out =new FileOutputStream("f:\huahua.obj"); ObjectOutputStream oos=new ObjectOutputStream(out); oos.writeObject(cat); oos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { objectOut(); objectIn(); }
}这是我写的对象输入输出流运行起来为什么会报错
解决方案
请把报错贴出来,方便分析问题。
从贴的代码看objectOut是写到f:huahua.obj,objectIn却是从d:object.abc来读,没有问题?
额外说一点,流不是贴的代码里那么close的,一般io.close()都是放到finally块里关闭,以防再流读取或者写入过程中抛出异常导致流不能正常关闭。
解决方案二:
文件名不同,是不是没有找到文件。报什么错。
解决方案三:
程序没有问题的,就是你的路径写错了,你输出的路径和输入的路径不一致的。