Java的IO操作 - 对象的序列化、ObjectInputStream和ObjectOutputStream类 (二)

2014-11-24 11:49:54 · 作者: · 浏览: 55
e,true);
ObjectOutputStream oos = new ObjectOutputStream(fis)
{
// 重写 writeStreamHeader()方法,空实现
protected void writeStreamHeader(){};
};

// 写入数据
for(Object o : objs)
{
oos.writeObject(o);
}

// 关闭流
oos.close();
}
static private List readObj(String fileName) throws Exception
{
File file = new File(fileName);

// 使用List保存读取出来的对象
ArrayList list = new ArrayList();

// 创建流对象
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);

// 读取对象并放入List容器中
while(fis.available() > 0)
{
list.add((User)ois.readObject());
}

ois.close();
return list; // 返回List
}

static private void writeObj(Object[] objs,String fileName) throws Exception
{
// 使用命令行参数中指定的文件名
File file = new File(fileName);

// 创建流对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));

// 写入对象
for(Object o : objs)
{
oos.writeObject(o);
}

// 关闭流
oos.close();
}
}

package cls;

import java.io.*;
import java.util.*;
import cls.User;

public class ObjectStreamDemo
{
public static void main(String[] args)
{
User[] user = new User[]{new User("dogg",1),new User("catt",2),new User("pigg",3)};

// 向文件中写入对象
try
{
ObjectStreamDemo.writeObj(user,args[0]);
}

catch(Exception e)
{
System.out.println(e.toString());
}

// 向文件中追加对象
try
{
// 要追加的对象
User[] u = new User[]{new User("append1",4),new User("append2",5)};

ObjectStreamDemo.appendObj(u,args[0]);
}
catch(Exception e)
{
System.out.println(e.toString());
}
// 读取对象
try
{
List list = ObjectStreamDemo.readObj(args[0]);

// 输出对象信息
Iterator it = list.iterator();
while(it.hasNext())
{
User temp = it.next();
System.out.println(temp.getName() + "," + temp.getNum());
}
}
catch(Exception e)
{
System.out.println(e.toString());
}
}

static private void appendObj(Object[] objs,String fileName) throws Exception
{
File file = new File(fileName);

// 以追加模式创建文件流对象
FileOutputStream fis = new FileOutputStream(file,true);
ObjectOutputStream oos = new ObjectOutputStream(fis)
{
// 重写 writeStreamHeader()方法,空实现
protected void writeStreamHeader(){};
};

// 写入数据
for(Object o : objs)
{
oos.writeObject(o);
}

// 关闭流
oos.close();
}
static private List readObj(String fileName) throws Exception
{
File file = new File(fileName);

// 使用List保存读取出来的对象
ArrayList list = new ArrayList();

// 创建流对象
FileInputStream fis = ne