本实例均采用对象User…使用对象流输入流objectInputStream和对象输出流objectOutputStream进行操作。。。文件流FileinputStreamFileOutPutStream
一、 ArrayList-实现了Serializable,接口。可以操作对象
FileOutputStream outStream = new FileOutputStream("E:/1.txt",true);
ObjectOutputStream objectOutputStream=newObjectOutputStream(outStream);
User user=new User();
user.setPassword("");
user.setUsername("小红");
User user1=new User();
user1.setPassword("312");
user1.setUsername("小明");
User user2=new User();
user2.setPassword("234");
user2.setUsername("小花");
List<User> list=new ArrayList<User>();
//Serializable,实现了序列化
list.add(user);
objectOutputStream.writeObject(list);
//objectOutputStream.writeObject(null);
objectOutputStream.flush();
objectOutputStream.close();
}
ClassNotFoundException {
FileInputStream fileInputStream = new FileInputStream("E:/1.txt");
ObjectInputStream objectInputStream = new ObjectInputStream(
fileInputStream);
List<User>list = new ArrayList<User>();
List obj = null;
try {
while (true) {
if ((obj = (ArrayList)objectInputStream.readObject()) != null) {
System.out.println(obj);
}
}
} catch (IOException e) {
//注意这儿是抛出了java.io.EOFException异常
的,只是没做处理
} finally {
objectInputStream.close();
}
for (int i = 0; i < obj.size(); i++) {
Useruser = (User)obj.get(i);
System.out.println(user.getPassword());
System.out.println(user.getUsername());
}
private String username;
private String password;
public String getUsername() {
returnusername;
}
publicvoid setUsername(String username) {
this.username = username;
}
public String getPassword() {
returnpassword;
}
publicvoid setPassword(String password) {
this.password = password;
}
}
ArrayList实现了Serializable接口。。。。。
try {
while (true) {
if (objectInputStream.readObject() != null) {
List<User> list1=(ArrayList) objectInputStream.readObject();
//此行代码抛出java.io.EOFException异常
System.out.println(list1);
}
}
注:最好不要对User对象直接存取。将其封装在ArrayList等实现了序列号的集合中。。
第二:Map-HashMap
package com.cn.arraylist;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class ReadUser {
@SuppressWarnings("unchecked")
publicstatic void main(String[] args) throws IOException,
ClassNotFoundException{
FileInputStreamfileInputStream = new FileInputStream("E:/1.txt");
ObjectInputStreamobjectInputStream = new ObjectInputStream(
fileInputStream);
//List<User>list = new ArrayList<User>();
Objectuser1 = null;
try{
while(true) {
if((user1=objectInputStream.readObject()) != null) {
Map<String,User>user=(HashMap<String,User>)user1;//转化成HashMap集合对象
Iteratoriterator=user.keySet().iterator();//a set view of the keys contained in thismap
while(iterator.hasNext()){
//System.out.println(user.get(iterator.next()));
Useru=(User)user.get(iterator.next());//迭代输出。转换成User对象
System.out.println(u.getPassword()+" "+u.getUsername());
}
}
}
}catch (IOException e) {
}finally {
objectInputStream.close()
}
FileOutputStream outStream = new FileOutputStream("E:/1.txt",true);
ObjectOutputStream objectOutputStream=newObjectOutputStream(outStream);
User user=new User();
user.setPassword("123");
user.setUsername("吴密");
User user1=new User();
user1.setPassword("312");
user1.setUsername("小明");
User user2=new User();
user2.setPassword("234");
user2.setUsername("小花");
Map<String,User> m=new HashMap<String,User>();
m.put(user.getUsername(), user);
m.put(user1.getUsername(), user1);
m.put(user2.getUsername(), user2);
objectOutputStream.writeObject(m);
objectOutputStream.flush();
objectOutputStream.close();
HashMap键值不允许重复。。。可以为NULL(空)
第二种遍历HashMap方法:
Iterator it =user.entrySet().iterator();//返回此映射所包含的映射关系的 Set 视图。
while(it.hasNext()){
java.util.Map.Entryentry = (java.util.Map.Entry)it.next();
// entry.getKey() 返回与此项对应的键
// entry.getValue() 返回与此项对应的值
//System.out.println(entry.getValue());
//System.out.println(entry.getKey());
Useru=(User)entry.getValue();
System.out.println(u.getPassword()+""+u.getUsername());
}