您现在的位置是:首页 > 文章详情

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

日期:2019-03-27点击:432

在实际开发中会经常碰到使用编程语言读取文本文件的内容,这内容可以是各种各样的
一下本人写出我自己做的一个读取文本文件的例子,
文件中存储的是我的个人网站 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可以存储一些简单的数据还是挺方便的 
原文链接:https://yq.aliyun.com/articles/695659
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章