黑马程序员技术交流社区
标题:
Java IO流问题
[打印本页]
作者:
操金成
时间:
2014-7-3 00:21
标题:
Java IO流问题
BufferedInputStream(InputStream in),传递的参数是InputStream类型或其子类是吧,那么一下两个语句中那个是正确的,为什么?哪位大神能告诉我啊
ObjectInputStream os=new ObjectInputStream(new BufferedInputStream(new FileInputStream(file_i)));
BufferedInputStream in=BufferedInputStream(new ObjectInputStream(new FileInputStream(file_i)));
作者:
xiaobo
时间:
2014-7-3 01:08
第二个是正确的,BufferedInputStream是字节流缓冲区,BufferedInputStream in=new BufferedInputStream()里面传递的参数是InputStream类型或其子类,可提高字节输出流的效率.
作者:
EarlyHeart
时间:
2014-7-3 04:11
第二个是正确的ObjectInputStream是InputStream的子类
作者:
操金成
时间:
2014-7-3 07:28
ObjectInputStream(InputStream in)
创建从指定 InputStream 读取的 ObjectInputStream。
这是我从jdk1.6中看到的,说明ObjectInputStream中传递的也是 InputStream
作者:
燿陚√揚葳
时间:
2014-7-3 12:25
这两种写法上都没有错,
ObjectInputStream ois=new ObjectInputStream(new BufferedInputStream(new FileInputStream(fiel)));
BufferedInputStream oos=new BufferedInputStream (new ObjectInputStream(new FileInputStream(file)));
只要记得用ObjectOutputStream写入对象,就一定要用ObjectInputStream读取
不过第二种这么写好像没有什么意义啊
你看这段代码
<P>class Person implements Serializable{
private String name;
private int age;
Person(String name,int age){
this.name=name;
this.age=age;
}
public String toString(){
return name+"*****"+age;
}
}
public class Demo {
public static void main(String[] args)throws Exception{
// writeObject();
readeObject();
}
public static void readeObject()throws Exception{</P>
<P> </P>
<P>//这是你写的第一种写法,就是在原来的基础上加了个缓冲
ObjectInputStream ois=new ObjectInputStream(new BufferedInputStream(new FileInputStream("a.txt")));
// ObjectInputStream ois=new ObjectInputStream(new FileInputStream("a.txt"));
Person p=(Person)ois.readObject();
sop(p);
ois.close();
}
public static void writeObject()throws IOException{</P>
<P> </P>
<P>//这是你写的第二个把ObjectOutputStream加入缓冲,这里你就无法将一个对象序列化了,所以说这么写没有什么意义</P>
<P>//这么写是没错的,只要是OutputStream或其子类就可以
BufferedOutputStream oos=new BufferedOutputStream(new ObjectOutputStream(new FileOutputStream("a.txt")));
// ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("a.txt"));
oos.writeObject(new Person("lisi",25));</P>
<P>oos.close();
}
public static void sop(Object obj){
System.out.println(obj);
}
}</P>
复制代码
作者:
操金成
时间:
2014-7-3 18:51
对极了,感谢你
作者:
SLJ_920808
时间:
2014-7-3 18:54
正确的应该是第二个ObjectInputStream是InputStream的子类。
作者:
gyw520gyw
时间:
2014-7-3 19:39
哇 , 自己可以再编译器中验证一下!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2