A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 操金成 中级黑马   /  2014-7-3 00:21  /  1136 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

BufferedInputStream(InputStream in),传递的参数是InputStream类型或其子类是吧,那么一下两个语句中那个是正确的,为什么?哪位大神能告诉我啊
ObjectInputStream os=new ObjectInputStream(new BufferedInputStream(new FileInputStream(file_i)));
BufferedInputStream in=BufferedInputStream(new ObjectInputStream(new FileInputStream(file_i)));

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

9 个回复

正序浏览
哇 , 自己可以再编译器中验证一下!
回复 使用道具 举报
正确的应该是第二个ObjectInputStream是InputStream的子类。
回复 使用道具 举报
对极了,感谢你
回复 使用道具 举报
这两种写法上都没有错,
ObjectInputStream ois=new ObjectInputStream(new BufferedInputStream(new FileInputStream(fiel)));
BufferedInputStream oos=new BufferedInputStream (new ObjectInputStream(new FileInputStream(file)));
只要记得用ObjectOutputStream写入对象,就一定要用ObjectInputStream读取
不过第二种这么写好像没有什么意义啊
你看这段代码

  1. <P>class Person implements Serializable{
  2. private String name;
  3. private int age;
  4. Person(String name,int age){
  5. this.name=name;
  6. this.age=age;
  7. }
  8. public String toString(){
  9. return name+"*****"+age;
  10. }
  11. }
  12. public class Demo {
  13. public static void main(String[] args)throws Exception{
  14. // writeObject();
  15. readeObject();
  16. }
  17. public static void readeObject()throws Exception{</P>
  18. <P> </P>
  19. <P>//这是你写的第一种写法,就是在原来的基础上加了个缓冲
  20. ObjectInputStream ois=new ObjectInputStream(new BufferedInputStream(new FileInputStream("a.txt")));

  21. // ObjectInputStream ois=new ObjectInputStream(new FileInputStream("a.txt"));
  22. Person p=(Person)ois.readObject();
  23. sop(p);
  24. ois.close();
  25. }
  26. public static void writeObject()throws IOException{</P>
  27. <P> </P>
  28. <P>//这是你写的第二个把ObjectOutputStream加入缓冲,这里你就无法将一个对象序列化了,所以说这么写没有什么意义</P>
  29. <P>//这么写是没错的,只要是OutputStream或其子类就可以
  30. BufferedOutputStream oos=new BufferedOutputStream(new ObjectOutputStream(new FileOutputStream("a.txt")));
  31. // ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("a.txt"));
  32. oos.writeObject(new Person("lisi",25));</P>
  33. <P>oos.close();
  34. }
  35. public static void sop(Object obj){
  36. System.out.println(obj);
  37. }
  38. }</P>
复制代码




评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
ObjectInputStream(InputStream in)
          创建从指定 InputStream 读取的 ObjectInputStream。
这是我从jdk1.6中看到的,说明ObjectInputStream中传递的也是 InputStream
回复 使用道具 举报
第二个是正确的ObjectInputStream是InputStream的子类
回复 使用道具 举报 1 0
第二个是正确的,BufferedInputStream是字节流缓冲区,BufferedInputStream in=new BufferedInputStream()里面传递的参数是InputStream类型或其子类,可提高字节输出流的效率.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马