教你一招,使用java读取解析txt文本数据,管理简单的数据

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

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

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

QQ_20190328141716

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

QQ_20190328142114

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

我就是通过这么一个文本来管理我的导航栏目的,当然最好还是用数据库管理,text可以存储一些简单的数据还是挺方便的
相关文章
|
2月前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
2月前
|
存储 安全 Java
《数据之美》:Java集合框架全景解析
Java集合框架是数据管理的核心工具,涵盖List、Set、Map等体系,提供丰富接口与实现类,支持高效的数据操作与算法处理。
|
2月前
|
人工智能 缓存 自然语言处理
Java与多模态AI:构建支持文本、图像和音频的智能应用
随着大模型从单一文本处理向多模态能力演进,现代AI应用需要同时处理文本、图像、音频等多种信息形式。本文深入探讨如何在Java生态中构建支持多模态AI能力的智能应用。我们将完整展示集成视觉模型、语音模型和语言模型的实践方案,涵盖从文件预处理、多模态推理到结果融合的全流程,为Java开发者打开通往下一代多模态AI应用的大门。
367 41
|
3月前
|
Java 开发者
Java 函数式编程全解析:静态方法引用、实例方法引用、特定类型方法引用与构造器引用实战教程
本文介绍Java 8函数式编程中的四种方法引用:静态、实例、特定类型及构造器引用,通过简洁示例演示其用法,帮助开发者提升代码可读性与简洁性。
|
3月前
|
Java 开发者
Java并发编程:CountDownLatch实战解析
Java并发编程:CountDownLatch实战解析
471 100
|
3月前
|
机器学习/深度学习 JSON Java
Java调用Python的5种实用方案:从简单到进阶的全场景解析
在机器学习与大数据融合背景下,Java与Python协同开发成为企业常见需求。本文通过真实案例解析5种主流调用方案,涵盖脚本调用到微服务架构,助力开发者根据业务场景选择最优方案,提升开发效率与系统性能。
911 0
|
3月前
|
安全 Java API
Java SE 与 Java EE 区别解析及应用场景对比
在Java编程世界中,Java SE(Java Standard Edition)和Java EE(Java Enterprise Edition)是两个重要的平台版本,它们各自有着独特的定位和应用场景。理解它们之间的差异,对于开发者选择合适的技术栈进行项目开发至关重要。
468 1
|
3月前
|
Java
Java的CAS机制深度解析
CAS(Compare-And-Swap)是并发编程中的原子操作,用于实现多线程环境下的无锁数据同步。它通过比较内存值与预期值,决定是否更新值,从而避免锁的使用。CAS广泛应用于Java的原子类和并发包中,如AtomicInteger和ConcurrentHashMap,提升了并发性能。尽管CAS具有高性能、无死锁等优点,但也存在ABA问题、循环开销大及仅支持单变量原子操作等缺点。合理使用CAS,结合实际场景选择同步机制,能有效提升程序性能。
|
4月前
|
存储 缓存 Java
Java数组全解析:一维、多维与内存模型
本文深入解析Java数组的内存布局与操作技巧,涵盖一维及多维数组的声明、初始化、内存模型,以及数组常见陷阱和性能优化。通过图文结合的方式帮助开发者彻底理解数组本质,并提供Arrays工具类的实用方法与面试高频问题解析,助你掌握数组核心知识,避免常见错误。
|
4月前
|
存储 缓存 算法
Java数据类型与运算符深度解析
本文深入解析Java中容易混淆的基础知识,包括八大基本数据类型(如int、Integer)、自动装箱与拆箱机制,以及运算符(如&与&&)的使用区别。通过代码示例剖析内存布局、取值范围及常见陷阱,帮助开发者写出更高效、健壮的代码,并附有面试高频问题解析,夯实基础。

推荐镜像

更多
  • DNS