天天看點

教你一招,使用java讀取解析txt文本資料,管理簡單的資料

在實際開發中會經常碰到使用程式設計語言讀取文本檔案的内容,這内容可以是各種各樣的

一下本人寫出我自己做的一個讀取文本檔案的例子,

檔案中存儲的是我的個人網站 www.yzcopen.com 導航欄目

因為懶得使用資料庫了,就用text文本代替了做了一個簡單的資料庫

一下圖檔是我存儲的格式:

教你一招,使用java讀取解析txt文本資料,管理簡單的資料

然後通過java代碼在程式加載的時候讀取文本内容存儲到緩存中

詳細代碼如下:

先建立一個緩存類:

package com.yzcopen.cache;

import java.util.Map;

import java.util.concurrent.ConcurrentHashMap;

public class initCache {

private static Map<String,Object> cacheMap = new ConcurrentHashMap<String,Object>(); 

    //單執行個體構造方法   
 private initCache() {
 }
 
 /**
  * 增加緩存
  * @param key
  * @param value
  */
 public static void setValue(String key,Object value){
    cacheMap.put(key, value);
 }
 

    //清除指定的緩存   
 public synchronized static void clearOnly(String key) {   
       cacheMap.remove(key);   
 }   
    
    
    //清除所有緩存   
 public synchronized static void clearAll() {   
      cacheMap.clear();   
 }
 
    //修改緩存資料
 public synchronized static void editeCache(String key,Object value) {
     clearOnly(key);
     cacheMap.put(key, value);
 }
     
/**
 * 以下都是查詢
 * @param key
 * @return
 */
@SuppressWarnings("unchecked")
public static Map<String,String> getMapValue(String key){
     Object obj =  cacheMap.get(key);
     if(obj!=null){
         return (Map<String, String>) obj;
     }
     return null;
 }

public static Object getObjValue(String key){
     Object obj =  cacheMap.get(key);
     return obj;
    
 }

 
public static Integer getIntValue(String key){
     Object obj =  cacheMap.get(key);
     if(obj!=null){
         return (Integer)obj;
     }
     return 0;
 }

public static String getStringValue(String key){
     Object obj =  cacheMap.get(key);
     if(obj!=null){
         return (String)obj;
     }
     return "";
 }
    


           

}

然後讀取代碼函數:

public static void initCache(){
    InputStream in =  YzcPattern.class.getResourceAsStream("/resources/menu.txt");  //文本目錄  YzcPattern 可以換成任意類
       InputStreamReader reader = null;
        BufferedReader br = null;
        try {
            reader = new InputStreamReader(  
                    in,"gbk");
              br = new BufferedReader(reader); // 建立一個對象,它把檔案内容轉成計算機能讀懂的語言  
                String line = "";  
                line = br.readLine();
                List<Map<String,Object>> menup = new ArrayList<Map<String,Object>>();
                List<Map<String,Object>> menuc = new ArrayList<Map<String,Object>>();
                while (line != null) {
                     String[] lines = line.split("\\|");
                     if(lines[0].equals("p")){
                         Map<String,Object> map = new HashMap<String,Object>();
                         map.put("bh", lines[1]);
                         map.put("name", lines[2]);
                         map.put("img", lines[3]);
                         map.put("listmap", new ArrayList<Map<String,Object>>());
                         menup.add(map);
                     }else if(lines[0].equals("c")){
                         Map<String,Object> map = new HashMap<String,Object>();
                         map.put("pbh", lines[1]);
                         map.put("bh", lines[2]);
                         map.put("name", lines[3]);
                         map.put("dis", lines[4]);
                         map.put("url", lines[5]);
                         map.put("img", lines[6]);
                         menuc.add(map);
                     }
                     line = br.readLine();
                }
                for(int i=0;i<menup.size();i++){
                    Map<String,Object> ob = menup.get(i);
                    String bm = ob.get("bh")+"";
                    for(int b = 0;b<menuc.size();b++){
                        Map<String,Object> obc = menuc.get(b);
                        String pbm = obc.get("pbh")+"";
                        if(bm.equals(pbm)){
                            ((ArrayList)ob.get("listmap")).add(obc);
                        }
                    }
                }
                initCache.setValue("p", menup);
                initCache.setValue("c", menuc);
                
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(br!=null){
                try {
                    br.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(reader!=null){
                try {
                    reader.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
}

menu.txt存放目錄如下圖:           
教你一招,使用java讀取解析txt文本資料,管理簡單的資料
好了核心代碼都貼出來了,

我就是通過這麼一個文本來管理我的導航欄目的,當然最好還是用資料庫管理,text可以存儲一些簡單的資料還是挺友善的