JAVA_如何读出对象数组

来源:百度知道 编辑:UC知道 时间:2024/07/07 10:52:25
已经通过ObjectOuputStream将一个对象数组写入到本地文件,在假设元素个数未知的情况下如何将此对象数组全部读出?
问题在于,有没有方法能够从文件中读出一个对象数组,readObject只能读出单个的对象,这样用FOR循环我就无法确定对象数组的长度。

这样我把要储存的对象数组中的元素对象贴出来吧:
class obj implements Serializable
{
String[] IP;
char[] CMD;
String[] MSG;
int lengths;
public obj (String[] getIP,char[] getCMD,String[] getMSG)
{
IP=new String [getIP.length];
IP=getIP;
CMD=new char [getCMD.length];
CMD=getCMD;
MSG=new String [getMSG.length];
MSG=getMSG;
lengths=IP.length;
}
}

你换一个角度思考一下问题,就知道怎么解决了,你别老想我要得到这个长度是多少就好。
给你个思路,你先把文件用I/O流读到,然后再用一个while循环,不断的从流里面取对象,直到流为null了,就不再循环。这样应该就解决了问题吧!

//: ArrayObject.java

import java.io.*;

public class ArrayObject {
public static void main(String[] args) {

String file="obj.array";

int[] arr = new int[]{1,2,3,5,7,9,};

//写数组
save(arr,file);

//读对象
Object read = load(file);

//遍历数组
if(read != null && read instanceof int[]){
//直接将读取到的对象转型成 数组
int[] readArr = (int[])read;
System.out.println("arr length: "+readArr.length);
for(int i=0; i<readArr.length; i++)
System.out.print(readArr[i]+" ");
}
}

//保存对象到文件
static void save(Object o,String file){
try{
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
oos.writeObject(o);
oos.flush();