在实际开发中会经常碰到使用编程语言读取文本文件的内容,这内容可以是各种各样的
一下本人写出我自己做的一个读取文本文件的例子,
文件中存储的是我的个人网站 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. @EnableAutoConfiguration激活自动装配

    给予上个例子,将WebConfiguration类上的@SpringBootApplication换成@EnableAutoConfiguration.启动并运行http://localhost:80 ...

  2. Zookeeper--命令介绍

    参考 https://zookeeper.apache.org/doc/r3.4.13/zookeeperStarted.html#sc_ConnectingToZooKeeper 连接到zookee ...

  3. Chrome在新版MacOS上报错 NET::ERR_CERT_WEAK_KEY 解决方法

    现象 原文链接 证书详情: 原因 参考苹果官网给出的提示(https://support.apple.com/en-us/HT210176): RSA秘钥长度必须>=2048,小于这个长度的将不 ...

  4. SpringCloud学习之手把手教你用IDEA搭建入门项目(二)

    本篇博客是承接上一篇<手把手教你用IDEA搭建SpringCloud入门项目(一)>,不清楚的请到我的博客空间查看后再看本篇博客 1)先创建一个Eureka服务注册中心模块,用来作为服务的 ...

  5. Adobe PhotoShop CS6中文破解版下载

    在网上找了好多个PhotoShop破解版,但安装过程中都出现一些问题,用不了.现在找到一个比较小的PhotoShop CS6安装包,大小200M左右,下载解压,点击安装就可以使用了,安装过程十分简单. ...

  6. 79.常用的返回QuerySet对象的方法使用详解: filter, exclude,annotate

    返回新的QuerySet的常用方法: 1.filter: 将满足条件的数据提取出来,返回一个新的QuerySet 以下所使用的模型article,category,定义模型models.py文件中,示 ...

  7. Mac Outlook 2016 无法打开会议室日历

    问题:Mac Outlook 2016 无法打开会议室日历信息,报错截图如下: 解决方案: Set-MailboxFolderPermission -Identity XXX@xxx.com:\日历 ...

  8. .NET CORE 配置Swagger文档

    1.先通过NuGet安装Swashbuckle.AspNetCore ,支持.NET core,版本是4.0.1,以上版本好像有些功能不支持 2.startup文件里注入swagger,Configu ...

  9. maxima安装&使用

    环境: mint 19 或者 > ubuntu 18 源代码安装的好处, 可以使用最新版. mint 19.1 下面, 利用apt 直接安装的maxima版本太老,不支持 draw 函数. lo ...

  10. github访问过慢解决

    为了更加愉快地使用全球最大同性交友网站上的优质资源,我们来做一些简单的本机上的调整. 通过查看下载链接,能够发现最终被指向到Amazon的服务器(http://github-cloud.s3.amaz ...