对象保存到文件问题 自己写了一个链表,node1-->node2->node3-->node4-...想保存到文件,然后读回来有什么办法?如果保存对象的ObjectOutstream是不是保存node1就行了? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ObjectOutstreamObjectInputstream不过需要序列化 对象node1有指向node2的handle,保存node1后node2会不会一起保存???? 如果这个链表是自定义的类型就要实现Serializable接口。 /** * */package cn.com.sandpay.report.util;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.ArrayList;/** * 对象读写工具类 * * @author zhuwei * @since 2007-3-19 10:09:53 */public class ObjectUtil { /** * 读取对象方法 * @param filePath 文件路径 * @param needDelete 是否需要删除 * @return * @throws Exception */ public static Object read(String filePath,boolean needDelete) throws Exception{ ObjectInputStream ois=new ObjectInputStream(new FileInputStream(filePath)); Object obj=ois.readObject(); ois.close(); if(needDelete)(new File(filePath)).delete(); return obj; } /** * 写对象 * @param filePath 文件路径 * @param obj 需要存储的对象 * @throws Exception */ public static void write(String filePath,Object obj) throws Exception{ File f=new File(filePath); if(!(f.getParentFile().exists()))f.getParentFile().mkdirs(); ObjectOutputStream os=new ObjectOutputStream(new FileOutputStream(f)); os.writeObject(obj); os.close(); } /** * 测试方法 * @param args * @throws Exception */ public static void main(String[] args) throws Exception { //文件路径 String filePath="d:/aaa.obj"; //存储的数据 String data0="测试"; ArrayList data1=new ArrayList(); data1.add("数据1"); data1.add("数据2"); ArrayList data2=new ArrayList(); data2.add(data1); data2.add(data1); //写对象:如果需要存储多个数据,则用Object[]包装 ObjectUtil.write(filePath,new Object[]{data0,data2}); //读取对象 Object[] tobj=(Object[])ObjectUtil.read(filePath,false); System.out.println("0-> "+tobj[0]); System.out.println("1-> "+tobj[1]); }} 实现Serializable接口,然后用ObjectOutstream进行文件的写入 关于 httpUrlConnection 的 setDoOutput 与 setDoInput 强制类型转换异常 java新手的小程序!老师好像说是关于数组的! 问个关于SWING的问题 这程序为啥出现 java.lang.NullPointerException 错误?? 请问关于键盘输入回车问题。 Eclipse中如何输入命令行参数? 新手问题!!!到哪去找 JAVA 的编译器 入门级问题 C/S模式应需要了解哪些知识? 还是正则表达式的问题 谁帮我把这个程序加上异常处理
ObjectInputstream
不过需要序列化
*
*/
package cn.com.sandpay.report.util;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;/**
* 对象读写工具类
*
* @author zhuwei
* @since 2007-3-19 10:09:53
*/
public class ObjectUtil {
/**
* 读取对象方法
* @param filePath 文件路径
* @param needDelete 是否需要删除
* @return
* @throws Exception
*/
public static Object read(String filePath,boolean needDelete) throws Exception{
ObjectInputStream ois=new ObjectInputStream(new FileInputStream(filePath));
Object obj=ois.readObject();
ois.close();
if(needDelete)(new File(filePath)).delete();
return obj;
}
/**
* 写对象
* @param filePath 文件路径
* @param obj 需要存储的对象
* @throws Exception
*/
public static void write(String filePath,Object obj) throws Exception{
File f=new File(filePath);
if(!(f.getParentFile().exists()))f.getParentFile().mkdirs();
ObjectOutputStream os=new ObjectOutputStream(new FileOutputStream(f));
os.writeObject(obj);
os.close();
}
/**
* 测试方法
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
//文件路径
String filePath="d:/aaa.obj";
//存储的数据
String data0="测试";
ArrayList data1=new ArrayList();
data1.add("数据1");
data1.add("数据2");
ArrayList data2=new ArrayList();
data2.add(data1);
data2.add(data1);
//写对象:如果需要存储多个数据,则用Object[]包装
ObjectUtil.write(filePath,new Object[]{data0,data2});
//读取对象
Object[] tobj=(Object[])ObjectUtil.read(filePath,false);
System.out.println("0-> "+tobj[0]);
System.out.println("1-> "+tobj[1]); }}