`

java实用经验总结

阅读更多
Java实用经验总结--其他
1.   Map的遍历
有人看了这个标题可能发笑,因为这实在太简单,难道我在凑字数?可是根据我自己的经验来说,人的岁数长的时候记忆力却不跟着长,倒有不进反退的现象。我就是虽然写过很多遍但仍然用到的时候就忘个干净,在这里写一下强化记忆J
SortedMap pDataMap = new TreeMap();
Iterator itor = pDataMap.entrySet().iterator();
       while(itor.hasNext()){
           Map.Entry vEntry = (Entry) itor.next();
            vEntry.getKey();
    vEntry.getValue();
            //做一些其他的事……
}
2.   文件操作
本文主要关注简单的对象序列化的相关操作,对于更为详细的操作过程,请参照《Java编程思想 2e》。
2.1.文件过滤器
文件过滤器主要用在FileChooser或者File.listFiles()方法中,用于过滤掉一些与本程序无关的类型文件。本例给出一个察看给定文件后缀名的文件过滤器,对于给定的文件察看其文件名,如果和给定的后缀名一致则返回true,否则返回false。
publicclass RecorderFileFilter implements FilenameFilter
{
    /**后缀名 **/
        String postfixStr;
 
        public RecorderFileFilter(String postfix){
            this.postfixStr = postfix;
        }
 
        publicboolean accept(File dir, String name) {
            /**只判断后文件的缀名是否正确即可 **/
            if( name.endsWith(postfixStr) )
                    returntrue;
                else
                    returnfalse;
        }
}
2.2.对象的保存与读取
首先介绍一下我的程序的存储结构:我的数据保存在两种类型的文件中,即“时间字符串.data”和“时间字符串.plan”两种类型。其中.data文件是一个HashMap<String,String>类的序列化文件,而.plan文件是一个SortedMap<String,String>类的序列化文件。他们都保存在“user.dir/data”目录下。下面的这些方法的功能是读取/保存这个目录下数据文件,如果你想保存你自定义的文件到指定目录,下面的代码至需要稍微修改一下即可使用:
/**用以标识读入数据的类型,也是文件后缀名**/
    publicstaticfinal String DATA_TYPE = ".data";
    publicstaticfinal String PLAN_TYPE = ".plan";
 
    /**以程序运行目录作为基目录**/
    publicstatic File appDir = new File(System.getProperty("user.dir"));
    publicstatic File imgDir = new File(appDir,"img");
    publicstatic File dataDir = new File(appDir,"data");
    publicstatic File reportDir = new File(appDir,"report");
 
    publicstatic FileInputStream fIn;
    publicstatic FileOutputStream fOut;
    publicstatic ObjectInputStream objIn;
    publicstatic ObjectOutputStream objOut;
 
 
    /**---------------功能函数部分----------------------**/
    /**
     *查找并读入"user.home/data/"目录下所有的记录文件,将其放到一个Map
     *HashMapKey为文件名,也是欠款人帐户的ID号。
     *关于获得的文件的具体信息请参照技术说明书。
     *如果pType=DATA_TYPE,则dataMap的格式为<String,HashMap>
     *     pType=PLAN_TYPE,则dataMap的格式为<String,SortedMap>
     *@returnSortedMap
     */
    publicstatic HashMap loadAll(String pType){
        /** 数据文件名(简历账号的时间)即为ID **/
        HashMap vDataMap = new HashMap();
 
        /**后缀名为data的即为数据文件**/
        File[] dataFiles = dataDir.listFiles(new RecorderFileFilter(pType));
 
        for(int i = 0; i < dataFiles.length; i++){
            try{
                if( pType.equals(FileUtil.DATA_TYPE) ){
                    HashMap<String,String> hMap = (HashMap<String,String>)loadObjectFromFile(dataFiles[i]);
                    /**去掉文件名的后缀名即或得key,也就是欠款帐户ID**/
                    vDataMap.put(hMap.get("id"),hMap);
                }elseif( pType.equals(FileUtil.PLAN_TYPE) ){
                    SortedMap<String,SortedMap> hMap = (SortedMap<String,SortedMap>)loadObjectFromFile(dataFiles[i]);
                    /**去掉文件名的后缀名即或得key,也就是欠款帐户ID**/
                    vDataMap.put(StringUtil.clearFileName(dataFiles[i]) ,hMap);
                }else
                    thrownew Exception("读取了错误的文件类型");
 
            }
            catch(Exception ex) {
                MessageUtil.showErrMsg("读取数据时出现错误,数据有可能丢失!"+
                    "\n 文件名为:"+dataFiles[i].getName());
            }
        }
        return vDataMap;
    }
 
 
    /**
     *将给定内容存入文件中.
     *@parampContentMapMap其所装内容为<id(String), HashMapSortedMap>
     */
    publicstaticvoid saveAll(HashMap<String,String> pDataMap,SortedMap<String,String> pPlanMap){
        Iterator itor = pDataMap.entrySet().iterator();
        while(itor.hasNext()){
            Map.Entry vEntry = (Entry) itor.next();
            String id = (String) vEntry.getKey();
            saveToFile(id,pDataMap,pPlanMap);
        }
    }
 
 
    /**
     *将制定欠款账户的信息存入文件中
     *@paramidString          这个信息在保存欠款协议时不可或缺
     *@parampDataMapSortedMap
     *@parampPlanMapSortedMap
     */
    publicstaticvoid saveToFile(String id, HashMap<String,String> pDataMap,
        SortedMap<String,String> pPlanMap){
        try{
        if( pDataMap != null )
       saveObjectToFile(new File(dataDir,id+DATA_TYPE), pDataMap);
            if( pPlanMap != null )
                saveObjectToFile(new File(dataDir,id+PLAN_TYPE), pPlanMap);
    }
        catch(Exception ex) {
            MessageUtil.showErrMsg("保存数据时出现错误,数据没有被正确保存!");
        }
    }
 
 
    /**
     *将文件中的序列化对象读出来
     *@parampFileFile
     *@returnObject
     *@throwsException
     */
    publicstatic Object loadObjectFromFile(File pFile) throws Exception {
        fIn = new FileInputStream(pFile);
        objIn = new ObjectInputStream(fIn);
        Object obj = objIn.readObject();
        fIn.close();
        objIn.close();
        return obj;
    }
 
 
    /**
     *将对象序列化到相应的文件中去--保存数据时候专用,因为该函数将数据保存在appDir/data目录下
     *@parampFileNameString
     *@paramobjObject
     *@throwsException
     */
    publicstaticvoid saveObjectToFile(File pFile,Object pObj) throws Exception
    {
        fOut = new FileOutputStream(pFile);
        objOut = new ObjectOutputStream(fOut);
        objOut.writeObject(pObj);
        fOut.close();
        objOut.close();
    }
 
2.3.其他
由于每个程序都有图标文件,所以从制定目录读入图标应该是每个程序都会用到的。其次,删除指定目录下的指定类型文件似乎也很常用J
    /**img文件夹中获取图标**/
    publicstatic ImageIcon getImageIcon(String pImageFileName){
       File imgFile = new File(imgDir,pImageFileName);
       ImageIcon imageIcon = new ImageIcon(imgFile.getAbsolutePath());
       return imageIcon;
    }
 
    /**清除reportDir目录下所有html文件**/
    publicstaticvoid clearReportFiles(){
        File vReportDir = new File(reportDir.getAbsolutePath());
        File[] vReportFiles = vReportDir.listFiles(new FilenameFilter(){
        publicboolean accept(File dir, String name){
                if( name.endsWith("html"))
                    returntrue;
                returnfalse;
        }
    });
        for(int i = 0; i < vReportFiles.length; i++)
            vReportFiles[i].delete();
}
 
分享到:
评论

相关推荐

    Java实用经验总结--日期、数字篇

    在处理日期时,我们常常需要考虑到不同国家和地区的日期格式,但在这个经验总结中,我们将集中讨论不涉及国际化和复杂格式的情况。 在Java中,`java.util.Date` 类曾被广泛用于日期操作,但由于它的设计问题,现在...

    史上最全Java2实用教程及相关资料

    总之,这个Java2实用教程提供了全面的学习资源,无论是初学者还是有一定经验的开发者,都可以从中受益。只要按照合理的学习路径,充分利用这些资料,就能有效地掌握Java编程,并逐步提升自己的编程能力。

    Java语言程序设计实用教程

    本书是作者根据最新计算机教学大纲,并总结多年从事 Java 语言程序设计的教学经验编著而成的。 本书全面讲解了 Java 的基础内容和编程方法,在内容的深度和广度方面都给予了全面和认真地考虑,在 类、对象、继承...

    JAVA内存泄漏问题处理方法经验总结

    这篇博客“JAVA内存泄漏问题处理方法经验总结”分享了作者在处理此类问题时的一些实用技巧和经验,结合源码分析和工具使用,对于Java开发者来说是非常有价值的。 首先,了解内存泄漏的基本概念是至关重要的。内存...

    2021-2022年收藏的精品资料JAVA年度工作总结.doc

    【JAVA年度工作总结】 ...总的来说,这份JAVA年度工作总结充分展示了作者在JAVA编程领域的深入学习和实践经验,不仅涵盖了基础知识,还涉及了实战技能和持续学习的态度,体现了教育精品资料应有的全面性和实用性。

    java项目总结报告.pdf

    本资源是一个非常详细和实用的 Java 项目总结报告,涵盖了项目管理、Java 语言、数据库设计、需求分析、表单设计、数据校验、分页和批量删除、团队合作、问题解决等方面的内容,对于 Java 项目开发和软件工程有很大...

    Java实用程序设计100例(源码).rar

    "Java实用程序设计100例(源码)" 是一个宝贵的资源,涵盖了多种Java编程概念和技巧,适合初学者和有一定经验的开发者进行学习和实践。 在这一百个示例中,你将发现涵盖以下关键知识点: 1. **基础语法**:包括变量...

    Java实用系统指南

    ### Java实用系统指南知识点概述 #### 一、Java与多层结构 - **多层结构的概念**:传统C/S架构存在局限性,如业务逻辑耦合严重,导致维护和扩展困难。相比之下,J2EE(Java 2 Platform, Enterprise Edition)提供...

    java实用程序设计100例

    12. **设计模式**:Java设计模式是解决常见编程问题的经验总结,如单例模式、工厂模式、观察者模式等,学习并应用这些模式有助于写出更优雅、可维护的代码。 以上知识点在《Java实用程序设计100例》中会通过具体的...

    Java实用系统开发指南补丁

    "模式"在这里可能指的是设计模式,这是软件工程中的一种最佳实践,是解决常见问题的经验总结。在Java开发中,如单例模式、工厂模式、观察者模式等,都是提高代码可维护性和复用性的常用手段。 至于压缩包内的文件,...

    关于Java案例实训的实践总结报告

    Java案例实训是提升Java初学者和初级开发者技能的关键步骤,其目标是将理论知识转化为实际操作经验,以满足企业实际需求。实训项目的选择至关重要,它不仅需要覆盖所学的主要知识点,还需要具有适当的难度和实际应用...

    java实训总结与体会.doc

    Java实训总结与体会 标题:Java实训总结与体会 描述:Java实训总结与体会 标签:Java实训总结与体会 本文档总结了Java实训的经验和...本文档为Java初学者提供了实用的经验和建议,让他们更好地学习和掌握Java语言。

    Java面试题和经验总结2

    ### Java面试题和经验总结2 #### 一、面向对象的特征 面向对象编程(OOP)的核心特性有四个:抽象、继承、封装和多态。 1. **抽象**: - 定义:抽象是指从具体事物中抽取共同特征的过程。在面向对象编程中,抽象...

    java设计实用教程 课件

    1. **Java设计模式**:设计模式是解决软件设计中常见问题的经验总结,如单例模式、工厂模式、观察者模式等。学习设计模式能提高代码的可读性、可维护性和复用性,是成为一名合格的Java开发者必备的技能。 2. **面向...

    java web 开发总结

    这些经验总结对于初学者和有经验的开发者来说都是非常实用的,它们揭示了开发过程中可能会遇到的常见问题,并提供了具体的解决步骤。Java Web开发通常包括使用Java EE技术栈(如Servlet、JSP、EJB、JPA等),配合...

    阿里巴巴java性能调优实战-最新经验总结 PDF

    本文基于《阿里巴巴Java性能调优实战-最新经验总结》的内容,围绕Java性能调优这一主题,从多个角度出发,详细介绍了一系列实用的方法和技术。 #### 二、扎实的计算机基础 1. **计算机组成原理**:了解计算机硬件...

    JAVA笔试和面试题目要点总结

    Struts还提供了实用工具,如XML处理、JavaBeans属性处理和国际化支持。 5. **Web服务相关概念**: - **Web Service**:是一种基于网络的、模块化的组件,使用XML消息进行通信。 - **JAXP**:Java API for XML ...

    java学习方法用实用

    以下是一些基于高手经验的Java学习路径和技巧,旨在帮助初学者快速上手并深入理解Java。 1. **基础知识:**在开始学习Java之前,了解计算机科学基础和基本的编程概念是必要的。这包括理解变量、数据类型、运算符、...

Global site tag (gtag.js) - Google Analytics