文件格式不对 FileInputStream fi=new FileInputStream("stu.txt"); //stu.txt必须是用 FileOutputStream 格式输出的文件 写: FileOutputStream fos = new FileOutputStream("t.tmp"); ObjectOutputStream oos = new ObjectOutputStream(fos); Date date = new Date(200,9,1); oos.writeObject(date);写好后读: FileInputStream fis = new FileInputStream("t.tmp"); ObjectInputStream ois = new ObjectInputStream(fis); Date date = (Date) ois.readObject(); System.out.println(date);
FileOutputStream fos = new FileOutputStream("t.tmp"); ObjectOutputStream oos = new ObjectOutputStream(fos); Date date = new Date(200,9,1); oos.writeObject(date); oos.close();//必须先close,否则会出问题的!写好后读: FileInputStream fis = new FileInputStream("t.tmp"); ObjectInputStream ois = new ObjectInputStream(fis); Date date = (Date) ois.readObject(); System.out.println(date);
public static void main(String [] arg) { try{ FileOutputStream fos = new FileOutputStream("t.txt"); ObjectOutputStream oos = new ObjectOutputStream(fos); Date date; for(int i = 0 ;i <5; i ++) { date = new Date(200, 9, 1); oos.writeObject(date); } oos.close(); //必须先close,否则会出问题的! date = null; //写好后读: FileInputStream fis = new FileInputStream("t.txt"); ObjectInputStream ois = new ObjectInputStream(fis); for(int i = 0 ; i < 5 ; i ++) { date = (Date) ois.readObject(); System.out.println(date); } }catch(Exception e){e.printStackTrace();} } 用上面大哥的东西,这样写好像没有错啊
{
outputFile = new FileOutputStream ("D:\\dataFile.txt");
ObjectOutputStream serializeStream = new ObjectOutputStream (outputFile);
while (i < 5)
{
r = System.in.read ();
strTmp = "";
while (r != 13)
{
if (((r >= 48) && (r <= 57)) || r == 46)
{
strTmp += (char) r;
} r = System.in.read ();
}
serializeStream.writeDouble(Double.parseDouble(strTmp));
i ++;
}
serializeStream.flush ();
}
catch (Exception e)
{
System.out.println ("Error during serialization");
}
finally
{
try
{
outputFile.close ();
}
catch (Exception e)
{
System.out.println (e.toString ());
}
}
你没有看清楚吧
上面这个简单啊
而且也没有什么技巧再具体一点我的问题:我想把已经写入的几个对象读到定义好的一个对象数组里面
但是读的时候我 只能读出来第一个对象 别的就读不出来了用for循环的时候 try{
FileInputStream fi=new FileInputStream("stu.txt");
ObjectInputStream si=new ObjectInputStream(fi);
for(int i=0;(Student)si.readObject()!=null;i++)
{
stu[i]=(Student)si.readObject();
}si.close();
}catch(Exception e){System.out.println(e);}给出这样的异常 java.io.StreamCorruptedException是不是每次读的时候确定读的位置 如果是的话 怎么确定才好高手再看看啊
是不是能给出一个具体的代码
我还是不明白ObjectInputStream si=new ObjectInputStream(fi);这一句怎么有问题了?
最好给写两句代码
谢谢
FileInputStream fi=new FileInputStream("stu.txt");
//stu.txt必须是用 FileOutputStream 格式输出的文件
写:
FileOutputStream fos = new FileOutputStream("t.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
Date date = new Date(200,9,1);
oos.writeObject(date);写好后读:
FileInputStream fis = new FileInputStream("t.tmp");
ObjectInputStream ois = new ObjectInputStream(fis);
Date date = (Date) ois.readObject();
System.out.println(date);
ObjectOutputStream oos = new ObjectOutputStream(fos);
Date date = new Date(200,9,1);
oos.writeObject(date);
oos.close();//必须先close,否则会出问题的!写好后读:
FileInputStream fis = new FileInputStream("t.tmp");
ObjectInputStream ois = new ObjectInputStream(fis);
Date date = (Date) ois.readObject();
System.out.println(date);
我说的是我可以读出来对象
但是我要的是读出来多个对象
读一个我会 但是读多个的话就不行了
尤其是用循环控制的时候更有问题
怎么循环我只能读出来一个 而不是全部都能读出来再给看看吧 :(谢谢~~
邮箱:[email protected]希望有大哥,大姐可以给在线指导
谢谢!!!!
______________________________________________
此时你已经读出了一个Students了,指针指向下一个对象了;
----------------------------------------------
{
stu[i]=(Student)si.readObject();
----------------------------------------------
读出第二个,放入数组;
----------------------------------------------
}
因为你只写进了3个,所以,只能读出一个。你多写几个试一试,每隔一个,才放一个到数组中;
{
try{
FileOutputStream fos = new FileOutputStream("t.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
Date date;
for(int i = 0 ;i <5; i ++)
{
date = new Date(200, 9, 1);
oos.writeObject(date);
}
oos.close(); //必须先close,否则会出问题的!
date = null;
//写好后读:
FileInputStream fis = new FileInputStream("t.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
for(int i = 0 ; i < 5 ; i ++)
{
date = (Date) ois.readObject();
System.out.println(date);
}
}catch(Exception e){e.printStackTrace();}
}
用上面大哥的东西,这样写好像没有错啊