在实际开发中会经常碰到使用编程语言读取文本文件的内容,这内容可以是各种各样的
一下本人写出我自己做的一个读取文本文件的例子,
文件中存储的是我的个人网站 www.yzcopen.com 导航栏目
因为懒得使用数据库了,就用text文本代替了做了一个简单的数据库

一下图片是我存储的格式:

然后通过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存放目录如下图:


    好了核心代码都贴出来了,

我就是通过这么一个文本来管理我的导航栏目的,当然最好还是用数据库管理,text可以存储一些简单的数据还是挺方便的
    www.yzcopen.com 一个在线工具网站,导航就是用这样的方式做的。

使用java读取解析txt文本数据,管理简单的数据的更多相关文章

  1. Java HashSet对txt文本内容去重(统计小说用过的字或字数)

    Java HashSet对txt文本内容去重(统计小说用过的字或字数) 基本思路: 1.字节流读需要去重的txt文本.(展示demo为当前workspace下名为utf-8.txt的文本) 2.对读取 ...

  2. json-lib-2.4-jdk15.jar所需全部JAR包.rar java jsoup解析开彩网api接口json数据实例

    json-lib-2.4-jdk15.jar所需全部JAR包.rar  java jsoup解析开彩网api接口json数据实例 json-lib-2.4-jdk15.jar所需全部JAR包.rar  ...

  3. java读取解析application.yml

    java读取解析application.yml 不用依赖spring容器,可单独使用. bug已修改... 第一步.首先要2个jar <!-- properties和yaml格式化 --> ...

  4. Java读取Excel并与SqlServer库中的数据比较

    先说说需求.在SQL server数据库中的表里存在一些数据,现在整理的Excel文档中也存在一些数据,现在需要通过根据比较某个字段值(唯一)来判断出,在库中有但excel中没有的数据. 大概的思路就 ...

  5. java读取url中json文件中的json数据

    有时候需要远程从其他接口中获取json数据,如果遇到返回的json数据是一个文件而不直接是数据,那么可以通过以下方法进行读取: /** * 从数据接口获取到数据 * @return * @throws ...

  6. JAVA 解析TXT文本

    package file; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; im ...

  7. java读取本地txt文件并插入数据库

    package com.cniia.ny.web.control.configManage; import java.io.BufferedReader; import java.io.File; i ...

  8. 解析txt文本,dom4j工具输出为xml文档

    有如下一个ttl.txt文本文档,每一行用空格隔开的三段分别代表主谓宾, 要将它们输出为xml格式文档 工具:dom4j,jar包导入MyEclipse的Java Project工程 代码如下: pa ...

  9. ajax读取txt文本时乱码的解决方案

    前言:第一次学习使用 ajax 就是用来读取文本 先给出现乱码的代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/ ...

随机推荐

  1. 题解 P1220 【关路灯】

    区间DP, 考虑设\(dp[i][j][t]\)为已经关掉了\([i,j]\)的电灯, 人在t端点处时的最小代价 可以推出方程: \[ dp[i+1][j][0]+(p[n]-p[j]+p[i])*( ...

  2. Linux高性能服务器编程:高性能服务器程序框架

    服务器有三个主要模块: (1)I/O处理单元 (2)逻辑单元 (3)存储单元 1.服务器模型 C/S模型 逻辑:服务器启动后,首先创建一个或多个监听socket,并调用bind函数将其绑定到服务器感兴 ...

  3. kali由wifi握手包破解密码&&gnuplot使用

    1.kali密码破解(WiFi握手包) cap包密码破解,aircrack-ng wifi.cap -w psw.txt(你的字典文件) 2.画图工具gnuplot 1.txt中保存的是坐标,形式为: ...

  4. 201612-2 工资计算 Java

    思路: 税+税后所得A=税前工资S. 因为工资是整百的数,每次减100来判断.好理解但是超时. import java.util.Scanner; //只有90分,超时了 public class M ...

  5. Go-并发和并行-协程-信道-缓冲信道-select-mutex-读写文件-beego框架

    并发 Go 是并发式语言,而不是并行式语言.在讨论 Go 如何处理并发之前,我们必须理解何为并发,以及并发与并行的区别. 并发是什么? 并发是指立即处理多个任务的能力.一个CPU的情况下<意指看 ...

  6. MQTT--Paho C Client 的实现和详解

    概述  在文章Paho - MQTT C Cient的实现中,我介绍了如何使用Paho开源项目创建MQTTClient_pulish客户端.但只是简单的介绍了使用方法,而且客户端的结果与之前介绍的并不 ...

  7. CEO、COO、CFO、CTO、CIO是什么意思/?

    CEO Chief Executive Officer 首席执行官 COO Chief Operating Officer 首席运营官 CFO Chief Financial Officer 首席财务 ...

  8. DNS和hosts

    https://zhidao.baidu.com/question/571487394.html 还有ip地址和域名 域名是唯一的 ip也是唯一的 但是一个域名可以对应多个ip(就好比百度只有一个域名 ...

  9. Vus the Cossack and Strings(Codeforces Round #571 (Div. 2))(大佬的位运算实在是太强了!)

    C. Vus the Cossack and Strings Vus the Cossack has two binary strings, that is, strings that consist ...

  10. python使用rsa非对称加密

    1.安装rsa 支持python 2.7 或者 python 3.5 以上版本 使用豆瓣pypi源来安装rsa pip install -i https://pypi.douban.com/simpl ...