教你一招,使用java读取解析txt文本数据,管理简单的数据
在实际开发中会经常碰到使用编程语言读取文本文件的内容,这内容可以是各种各样的
一下本人写出我自己做的一个读取文本文件的例子,
文件中存储的是我的个人网站 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可以存储一些简单的数据还是挺方便的
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
vue开发环境搭建Mac版
1、安装brew 打开终端运行以下命令: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 2、安装成功后,查看一下brew的版本信息: brew -v 4、安装 淘宝镜像 (npm) npm install -g cnpm --registry=https://registry.npm.taobao.org 5、安装webpack cnpm install webpack -g 6、安装vue脚手架 npm install vue-cli -g 9、安装项目依赖 npm install 比较慢,需要有点耐心…… 10、安装 vue 路由模块vue-router和网络请求模块vue-resource cnpm install vue-router vue-resource --save 11、启动项目 npm run dev
- 下一篇
好程序员web前端教程之前端模块化开发
1. 命名冲突首先从一个简单的习惯开始。由于以前一直做 JavaEE 开发的缘故,在 JavaScript 开发中,我已经习惯将项目中的一些通用功能抽象出来,形成一个个的独立函数,以便于实现代码复用,如:function css(element, attr) { // 获取 element 元素的 attr 对应的 CSS 属性值// ...}function offset(element) { // 获取 element 元素在文档中的位置坐标// ...}并把这些封装的函数放在统一的 tools.js 文件中。如果页面功能实现需要使用到这些函数,则直接通过 引入即可。前期感觉一切都好,大家也都觉得写这样的工具文件对开发来说很方便,直到使用越来越多,页面功能越来越复杂,大家要实现的需求也越来越多样。这时有人就抱怨,因为引入了 tools.js 文件,如果要定义一个能够设置 css 属性值的函数,那么就只有取另外的函数名称(如 setCss )而不能再使用 css 这个函数名称了,同样如果要设置一个元素在整个文档中的定位坐标,也不能再使用 offset 这个函数名称,因为那样的话,就与...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS关闭SELinux安全模块
- CentOS8安装Docker,最新的服务器搭配容器使用
- 设置Eclipse缩进为4个空格,增强代码规范