【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;
    }
}
【8】JAVA---地址App小软件(AddrDaoFile .class)(数据层)的更多相关文章
- Java---设计模式app小软件汇总应用
		写了一个app小软件,重点不在于软件,软件bug挺多,也没去修改. 这个小软件只是为了更好的说明和了解设计模块而做的. Java 程序设计–包结构 Java程序设计的系统体系结构很大一部分都体现在包结 ... 
- 【1】JAVA---地址App小软件(AddressApp.class)(初步接触项目开发的分层思想)(表现层)
		这个是表现层的main方法. 实现的地址信息有: 姓名,性别,年龄,电话,地址. 实现的功能有: 增加地址: 删除地址: 修改地址: 查找地址:其中年龄的查找为年龄段的查找. 数据存储的方式为文件存储 ... 
- 【6】JAVA---地址App小软件(QueryPanel.class)(表现层)
		查找模块: 年龄可进行段查找. 其他的都是模糊匹配. 空格为无用字符,会屏蔽的(除年龄). (如果在年龄中输入空格,会出现异常,当时没想到这点,要防护这点很容易的,但因为在这个小软件的编写过程,我主要 ... 
- 【5】JAVA---地址App小软件(DeletePanel.class)(表现层)
		删除地址的表现层类. 如果没有选中要删除的地址信息,会出现窗口提示: 删除地址界面:(无法修改数据,只能看) /* * DeletePanel.java * */ package cn.hncu.ad ... 
- 【4】JAVA---地址App小软件(UpdatePanel.class)(表现层)
		修改地址信息的一个表现层类. 必须选中地址,才能修改,否则会弹出窗口提示, 修改地址界面: /* * UpdatePanel.java * */ package cn.hncu.addr.ui; im ... 
- 【3】JAVA---地址App小软件(AddPanel.class)(表现层)
		添加地址信息界面. 年龄和地址必须是数字,否则会弹出窗口提示. 地址信息不能为空. /* * AddPanel.java * * Created on __DATE__, __TIME__ */ pa ... 
- 【2】JAVA---地址App小软件(ListPanel.class)(表现层)
		这个是表现层的主界面. /* * ListPanel.java * */ package cn.hncu.addr.ui; import javax.swing.JFrame; import java ... 
- 【7】JAVA---地址App小软件(AddrBusiness.class)(逻辑层)
		这个...没多少好解释的... 表现层的增删改查的具体实现类. package cn.hncu.addr.business; import javax.swing.JOptionPane; impor ... 
- Java开发学习(四十一)----MyBatisPlus标准数据层(增删查改分页)开发
		一.标准CRUD使用 对于标准的CRUD功能都有哪些以及MyBatisPlus都提供了哪些方法可以使用呢? 我们先来看张图: 1.1 环境准备 这里用的环境就是Java开发学习(四十)----MyBa ... 
随机推荐
- Shell脚本:判断用户和用户组是否已经存在/创建用户和用户组
			通常作为一个应用程序的部署脚本,开始的第一项工作是为当前应用创建一个专用(dedicated)的用户和用户组.这个脚本很简单,这里贴一个参考样本: #!/bin/sh user=test_user ... 
- JAVA冒泡排序/JAVA冒泡排序再找出给定数据中的最大值最小值/JAVA数组排序
			//数组中排序 int in[] = {1,6,5,8,9}; Arrays.sort(in); for(int i=0;i<in.length;i++){ Sys ... 
- Android面试,IntentService的原理及使用
			在Android开发中,我们或许会碰到这么一种业务需求,一项任务分成几个子任务,子任务按顺序先后执行,子任务全部执行完后,这项任务才算成功.那么,利用几个子线程顺序执行是可以达到这个目的的,但是每个线 ... 
- RHEL7使用ssm命令管理LVM
			1.安装ssm [root@localhost ~]# yum -y install system-storage-manager.noarch 2.检查硬盘和LVM信息 [root@localho ... 
- 2015 UESTC Winter Training #8【The 2011 Rocky Mountain Regional Contest】
			2015 UESTC Winter Training #8 The 2011 Rocky Mountain Regional Contest Regionals 2011 >> North ... 
- MediaPlayer 音频播放 示例
			状态机.流程图.生命周期 对播放音频/视频文件和流的控制是通过一个状态机来管理的.下图显示一个MediaPlayer对象被支持的播放控制操作驱动的生命周期和状态. 椭圆代表MediaPlayer对象可 ... 
- C# ashx生成的验证码
			public void ProcessRequest(HttpContext context) { context.Response.ContentType = "image/jpeg&qu ... 
- nyoj 37
			//nyoj 37 代码有点乱,和最长公共子序列很像,只是多加了一个数组,之前调用函数, 一直超时,可是我看了下,为什么用一个整形数组存放倒置字符串 竟然可以AC,我测试了下数据,打印出来的是一串地 ... 
- Ecstore关于finder的默认的参数row的数据不见了的一些小问题?
			在finder中,我们经常对默认的参数row进行数据的编辑处理,然而,在实际处理中,会遇到这么一个问题,该处理的数据不见了,造成这一原因的重要原 因是因为在设置的时候,把某些字段屏蔽掉了,导致返回的r ... 
- Wcf序列化的循环引用问题1
			1.Wcf数据契约序列化,使用的类DataContractSerializer 默认如果类不指定[DataContract],则序列化类的所有字段,并且在出现循环引用的时候回抛出异常,服务终止 msd ... 
