【8】JAVA---地址App小软件(AddrDaoFile .class)(数据层)

实现数据进行文件的存储和读写。
本软件也就到此结束了。
没多少可以讲的。
因为这个小软件也就8个类,主要学习的也就是一个分层思想的简单应用。

package cn.hncu.addr.dao;

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;

public class AddrDaoFile {
    static final String FILE_NAME = "chx.data";

    public static Object[] read() {
        ArrayList<Object> list = new ArrayList<Object>();
        ObjectInputStream in = null;
        try {
            in = new ObjectInputStream(new FileInputStream(FILE_NAME));

            Object obj;
            //**对象流的读不能用available()<=0来判断读完数据,而应该用异常来确定是否读到结束
            while(true){
                obj = in.readObject();
                list.add(obj);
            }
        } catch (Exception e) {
            //读到文件末尾,就是出异常,通过这来判断是否读到结束
            //因此,本程序中,这里是正常的文件读取结束,不是我们之前认为的出异常--所以不输出异常信息
            //e.printStackTrace();
        }finally{
            try {
                if(in!=null){
                    in.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        Object objs[] =list.toArray();
        if(objs==null){
            objs = new Object[0];
        }
        return objs;
    }

    public static boolean write(Object[] objs) {
        ObjectOutputStream out = null;
        try {
            out = new ObjectOutputStream(new FileOutputStream(FILE_NAME));
            for(Object obj:objs){
                out.writeObject(obj);
            }
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }finally{
            if(out!=null){
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }
        return true;
    }

}
谙忆 CSDN认证博客专家 Java
公众号:程序编程之旅。曾经写过C、C++,使用过Cocos2dx开发过游戏、安卓端、IOS端、PC端页面均开发过。目前专注Java开发,SaaS内核、元数据的研究。偶尔玩玩爬虫
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值