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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 在实际开发中会经常碰到使用编程语言读取文本文件的内容,这内容可以是各种各样的一下本人写出我自己做的一个读取文本文件的例子,文件中存储的是我的个人网站 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可以存储一些简单的数据还是挺方便的
相关文章
|
1月前
|
前端开发 JavaScript Java
java常用数据判空、比较和类型转换
本文介绍了Java开发中常见的数据处理技巧,包括数据判空、数据比较和类型转换。详细讲解了字符串、Integer、对象、List、Map、Set及数组的判空方法,推荐使用工具类如StringUtils、Objects等。同时,讨论了基本数据类型与引用数据类型的比较方法,以及自动类型转换和强制类型转换的规则。最后,提供了数值类型与字符串互相转换的具体示例。
|
2月前
|
消息中间件 存储 缓存
十万订单每秒热点数据架构优化实践深度解析
【11月更文挑战第20天】随着互联网技术的飞速发展,电子商务平台在高峰时段需要处理海量订单,这对系统的性能、稳定性和扩展性提出了极高的要求。尤其是在“双十一”、“618”等大型促销活动中,每秒需要处理数万甚至数十万笔订单,这对系统的热点数据处理能力构成了严峻挑战。本文将深入探讨如何优化架构以应对每秒十万订单级别的热点数据处理,从历史背景、功能点、业务场景、底层原理以及使用Java模拟示例等多个维度进行剖析。
58 8
|
6天前
|
存储 Java BI
java怎么统计每个项目下的每个类别的数据
通过本文,我们详细介绍了如何在Java中统计每个项目下的每个类别的数据,包括数据模型设计、数据存储和统计方法。通过定义 `Category`和 `Project`类,并使用 `ProjectManager`类进行管理,可以轻松实现项目和类别的数据统计。希望本文能够帮助您理解和实现类似的统计需求。
42 17
|
2月前
|
数据采集 自然语言处理 搜索推荐
基于qwen2.5的长文本解析、数据预测与趋势分析、代码生成能力赋能esg报告分析
Qwen2.5是一款强大的生成式预训练语言模型,擅长自然语言理解和生成,支持长文本解析、数据预测、代码生成等复杂任务。Qwen-Long作为其变体,专为长上下文场景优化,适用于大型文档处理、知识图谱构建等。Qwen2.5在ESG报告解析、多Agent协作、数学模型生成等方面表现出色,提供灵活且高效的解决方案。
203 49
|
29天前
|
机器学习/深度学习 人工智能 自然语言处理
秒级响应 + 99.9%准确率:法律行业文本比对技术解析
本工具基于先进AI技术,采用自然语言处理和语义匹配算法,支持PDF、Word等格式,实现法律文本的智能化比对。具备高精度语义匹配、多格式兼容、高性能架构及智能化标注与可视化等特点,有效解决文本复杂性和法规更新难题,提升法律行业工作效率。
|
1月前
|
前端开发 UED
React 文本区域组件 Textarea:深入解析与优化
本文介绍了 React 中 Textarea 组件的基础用法、常见问题及优化方法,包括状态绑定、初始值设置、样式自定义、性能优化和跨浏览器兼容性处理,并提供了代码案例。
58 8
|
1月前
|
XML JSON JavaScript
HttpGet 请求的响应处理:获取和解析数据
HttpGet 请求的响应处理:获取和解析数据
|
2月前
|
JSON Java 程序员
Java|如何用一个统一结构接收成员名称不固定的数据
本文介绍了一种 Java 中如何用一个统一结构接收成员名称不固定的数据的方法。
29 3
|
2月前
|
Java 程序员 容器
Java中的变量和常量:数据的‘小盒子’和‘铁盒子’有啥不一样?
在Java中,变量是一个可以随时改变的数据容器,类似于一个可以反复打开的小盒子。定义变量时需指定数据类型和名称。例如:`int age = 25;` 表示定义一个整数类型的变量 `age`,初始值为25。 常量则是不可改变的数据容器,类似于一个锁死的铁盒子,定义时使用 `final` 关键字。例如:`final int MAX_SPEED = 120;` 表示定义一个名为 `MAX_SPEED` 的常量,值为120,且不能修改。 变量和常量的主要区别在于变量的数据可以随时修改,而常量的数据一旦确定就不能改变。常量主要用于防止意外修改、提高代码可读性和便于维护。
|
2月前
|
存储 缓存 安全
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见。本文介绍了使用 `File.createTempFile` 方法和自定义创建临时文件的两种方式,详细探讨了它们的使用场景和注意事项,包括数据缓存、文件上传下载和日志记录等。强调了清理临时文件、确保文件名唯一性和合理设置文件权限的重要性。
151 2

热门文章

最新文章

推荐镜像

更多