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) 为什么就读不出来了?
这两个有什么区别么 不都是返回可读的字节数么? 谢谢了!
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) 为什么就读不出来了?
这两个有什么区别么 不都是返回可读的字节数么? 谢谢了!
刚才尝试过了,System.out.println(duqua.available());
显示为0。。
请高手解答原因,谢了
FileInputStream duqu = new FileInputStream(wenjian);
为什么不是
FileInputStream fileInputStream= new FileInputStream(file);一类的呢去公司面试,一看你这些命名规范,一下就刷。