package aaaa;
import java.io.File;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.io.Serializable;
import java.util.ArrayList;public class shiyan {
    public static void main(String[] args) {
        File wenjian=new File("d:\\aaa.txt");
        ArrayList<lei> shuzu=new ArrayList<lei>();
        if (!wenjian.exists())
        {
            System.out.println("文件不存在!");
            return;
        }
        try{
            FileInputStream duqu = new FileInputStream(wenjian);
            ObjectInputStream duqua = new ObjectInputStream(duqu);            while(duqu.available()>0) //为什么把这里改成duqua.available()>0就不行了?
            {
                shuzu.add((lei)duqua.readObject());
            }            for (int i=0;i<shuzu.size();i++)
            {
                System.out.println(shuzu.get(i).getage());
                System.out.println(shuzu.get(i).getname());
            }        }catch(Exception e)
        {
            System.out.println("出错了!");
        }
    }
}class lei implements Serializable
{
    public lei(String name,int age)
    {
        this.name=name;
        this.age=age;
    }    private String name;
    private int age;    public String getname()
    {
        return this.name;
    }    public int getage()
    {
        return this.age;
    }
}上面是我练习ObjectinputStream写的代码。我有一个问题。就是把
while(duqu.available()>0)  改成
while(duqua.available()>0) 为什么就读不出来了?
这两个有什么区别么 不都是返回可读的字节数么? 谢谢了!

解决方案 »

  1.   

    duqu.available()返回可以不受阻塞地从此文件输入流中读取的字节数。
      

  2.   

    确实很奇怪。。
    刚才尝试过了,System.out.println(duqua.available());
    显示为0。。
    请高手解答原因,谢了
      

  3.   

    我只觉得你的变量,对象引用写得很差,完全不和国际接轨比如wenjian嘛,就写个file 
     FileInputStream duqu = new FileInputStream(wenjian);
    为什么不是
     FileInputStream fileInputStream= new FileInputStream(file);一类的呢去公司面试,一看你这些命名规范,一下就刷。