<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-72  評論-20  文章-0  trackbacks-1
    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();
    }
    posted on 2007-07-27 22:29 前方的路 閱讀(157) 評論(0)  編輯  收藏 所屬分類: Java技術
    主站蜘蛛池模板: 亚洲国产精品一区二区久久| 日韩精品亚洲aⅴ在线影院| 亚洲精品成人图区| 国产又粗又猛又爽又黄的免费视频 | 波霸在线精品视频免费观看| 亚洲国产成人精品久久久国产成人一区二区三区综 | 香蕉大伊亚洲人在线观看| 国产1024精品视频专区免费| 亚洲国产综合在线| 我想看一级毛片免费的| 亚洲熟女乱色一区二区三区| 日本一区二区三区日本免费| 特级aaaaaaaaa毛片免费视频| 亚洲av无码成人精品区| 国产精品福利在线观看免费不卡| 久久伊人亚洲AV无码网站| 国内精品免费久久影院| 婷婷亚洲久悠悠色悠在线播放 | 亚洲日韩精品无码AV海量| 在线日韩av永久免费观看| 国产成人精品亚洲一区| 亚洲熟妇少妇任你躁在线观看无码| 九九热久久免费视频| 亚洲VA中文字幕无码一二三区| 57pao国产成永久免费视频 | jizz18免费视频| 亚洲av之男人的天堂网站| 国产精品久久永久免费| 亚洲日韩中文字幕一区| 亚洲精品老司机在线观看| 男人的天堂网免费网站| 亚洲综合精品第一页| 亚洲AV无码之日韩精品| 免费观看91视频| 亚洲精品中文字幕无码A片老| vvvv99日韩精品亚洲| 最近2019免费中文字幕视频三 | 色多多www视频在线观看免费| 国产AV无码专区亚洲AV男同| 精品久久久久成人码免费动漫| 黄色网页免费观看|