java的文件读写中,怎么好像在调用read()方法之前一定要想先调用write()方法,data文件中已有数据。 50
我先用一个java程序通过ObjectOutputstream流调用write方法写入了数据,我同学的模块直接通过ObjectInputstream流调用read()方法...
我先用一个java程序通过ObjectOutputstream流调用write方法写入了数据,我同学的模块直接通过ObjectInputstream流调用read()方法读出数据,但是读不出啊,举个小例子
BikeInfor bike1=new BikeInfor(111,"available");
ObjectOutputStream output=new ObjectOutputStream(new FileOutputStream("BikeInfor.dat"));
/*output.writeObject(bike1);*/ 注意 我现在把这个屏蔽了,下面的read就没办法进行了,但其实data文件中已经写入大量数据,应该可以直接读
output.close();
System.out.println("the below is all the bike Infomation....");
BikeInfor[] bike=new BikeInfor[3];
ObjectInputStream input=new ObjectInputStream(new FileInputStream("BikeInfor.dat"));
/*for(int i=0;i<2;i++)
{
}*/
bike[0]=(BikeInfor)input.readObject();
System.out.println(bike[0].biketype);
input.close();
就是说,如果我已经有一个写满数据的data文件,我能不能直接把它读出来 展开
BikeInfor bike1=new BikeInfor(111,"available");
ObjectOutputStream output=new ObjectOutputStream(new FileOutputStream("BikeInfor.dat"));
/*output.writeObject(bike1);*/ 注意 我现在把这个屏蔽了,下面的read就没办法进行了,但其实data文件中已经写入大量数据,应该可以直接读
output.close();
System.out.println("the below is all the bike Infomation....");
BikeInfor[] bike=new BikeInfor[3];
ObjectInputStream input=new ObjectInputStream(new FileInputStream("BikeInfor.dat"));
/*for(int i=0;i<2;i++)
{
}*/
bike[0]=(BikeInfor)input.readObject();
System.out.println(bike[0].biketype);
input.close();
就是说,如果我已经有一个写满数据的data文件,我能不能直接把它读出来 展开
4个回答
展开全部
你用的ObjectOutputstream/ObjectInputstream 是对象的输出输入流,这个流必须是成对出现,先写入对象,然后按照同样顺序读出对象。而且这个对象的类必须实现了Serializable接口,序列化对象。
如果直接从文件中读取数据可以用其他的输入输出流,比如用DataInputStream/DataOutputSteam。然后调用readUTF()方法读取字符串或者使用其他办法读取其他类型的数据。
如果直接从文件中读取数据可以用其他的输入输出流,比如用DataInputStream/DataOutputSteam。然后调用readUTF()方法读取字符串或者使用其他办法读取其他类型的数据。
追问
我看到有的地方建议把对象放进字节数组中再读写,但是怎么放进字节数组,可以指导一下吗
追答
首先,如果对象放入字节数组中读写也必须是先用对象输出流往字节数组里面写,然后在用对象输入流按照写入顺序读取。不过ObjectOutputStream必须用一个OutputStream的子类来构造,在通过这个子类向字节数组写入对象。我对这个对象流不是很熟悉,不过流程应该就是这样,找一个OutputStream的子类并且这个子类可以由一个字节数组来构造,然后用这个子类构造对象流。我印象中好像没有这个流···可能是我学的不够全面···
展开全部
应该是可以读出来的 你确定你和你同学的序列化接口的
“private static final long serialVersionUID ;”
这个id是一样的 如果不一样就无法读出来
“private static final long serialVersionUID ;”
这个id是一样的 如果不一样就无法读出来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写了之后刷新下看行不
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
output.flush();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询